Bonjour,
j'ai un petit code tout gentil qui veut écrire des données binaires dans un fichier.Jusque là tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'
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 faismais là, erreur, "Cannot use string as modifiable buffer" !
Code : Sélectionner tout - Visualiser dans une fenêtre à part >>> struct.pack_into('I',output,struct.calcsize('II'),444 )
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