fonction read avec fuse

Le
patatetom
bonjour,

mon module xb360hd me permet de parcourir une partition de type xtaf (xbox3=
60) et d'extraire des fichiers.

un fichier pouvant être volumineux (et discontinu), la fonction readFi=
le du module retourne un générateur.

depuis une console, je peux "facilement" copier un fichier avec ce bout de =
code :

partition = xb360hd.Xtaf('/dev/sdb')
with open('/tmp/copie', 'wb') as copy:
for data in partition.readFile(partition.getEntry('/chemin/vers/un/fichier=
')):
copy.write(data)

jusque là tout va bien.

je tente maintenant de rendre le contenu de la partition accessible "nature=
llement" avec mon module xtaffuse, mais je bloque sur la fonction read de f=
usepy et ne vois pas comment faire pour retourner le contenu du fichier san=
s avoir à le lire intégralement et le stocker temporairement en v=
ariable et donc en mémoire.

merci d'avance pour vos conseils, vos pistes, etc

(si la fonction read du module xtaffuse retourne directement le gén=
rateur issu de la fonction readFile du module xb360hd, j'ai l'erreur "ob=
ject of type 'generator' has no len()" / je ne souhaite pas utiliser un fic=
hier temporaire entre readFile du module xb360hd et read du module xtaffuse=
)

xb360hd : https://github.com/patatetom/xtaf/blob/master/xb360hd.py
xtaffuse : https://github.com/patatetom/xtaf/blob/master/xtaffuse.py
fusepy : https://github.com/fusepy/fusepy
xtaf : http://www.free60.org/wiki/FATX
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
patatetom
Le #26466264
après quelques tests, il apparait que le fichier est lu par morceaux :
read[0] 131072 bytes from 0 flags: 0x8000
read[0] 131072 bytes from 131072 flags: 0x8000
read[0] 131072 bytes from 262144 flags: 0x8000
...
read[0] 8192 bytes from 917504 flags: 0x8000
read[0] 4096 bytes from 925696 flags: 0x8000
le problème que je soulevais ne se pose donc pas en pratique.
j'apprécierais votre feedback si vous avez l'occasion d'essayer mon mo dule xtaffuse ;-)
Publicité
Poster une réponse
Anonyme