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