Bonjour,
j'ai un petit code tout gentil qui veut écrire des données binaires dans un fichier.
1 2 3 4 5
| >>> import struct
>>> output = struct.pack( 'II',1,2 )
>>> output += struct.pack( 'II',3,4 )
>>> output
'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00' |
Jusque là tout va bien.
Le seul truc un peu compliqué c'est que je veut modifier un peu mon output avant de l'écrire : je veux remplacer le 3 par 444.
Naïvement je fais
>>> struct.pack_into('I',output,struct.calcsize('II'),444 )
mais là, erreur, "Cannot use string as modifiable buffer" !
J'ai commencé à chercher, mais je ne trouve que des solutions à base de array. Et dans ce cas, pas moyen d'utiliser struct.pack...
De manière un peu plus générique, je veux :
- construire une string (ou n'importe quoi d'équivalant) par des concaténations successives avec struct.pack.
- modifier (de temps en temps) ma string déjà construite avec struct.pack_into.
- écrire le tout dans un fichier.
---> et bien sûr je ne connais pas la taille totale avant la fin...
Je ne peux pas croire qu'il n'existe pas un moyen simple et élégant de faire ça en python !
Partager