dans Python J'accède à un fichier binaire en le lisant dans une chaîne, puis en utilisant structure.unpack (...) code>. Maintenant, je veux écrire à cette chaîne en utilisant
structure.pack_into (...) code>, mais je reçois l'erreur "Impossible d'utiliser la chaîne comme tampon modifiable" em>. Quel serait un tampon approprié à utiliser avec le module
struct code>? P>
3 Réponses :
Si vous n'essayez pas de l'emballer dans un objet spécifique, utilisez simplement struct.pack code>
pour renvoyer une chaîne. p>
Sinon, CTTYPES.CREATE_String_Buffer Code>
est un moyen d'obtenir un tampon mutable. p>
La mémoire tampon est la mémoire d'une machine virtuelle simple, donc j'ai besoin d'emballer dans un objet spécifique. La mémoire est petite mais la copie 128-512K pour un seul accès à la mémoire n'est pas une option.
Comme indiqué dans une autre réponse, structure_pack code> est probablement tout ce dont vous avez besoin et doit utiliser. Cependant, des objets de type Array Prenez en charge le protocole de mémoire tampon et peuvent être modifiés:
>>> import array, struct
>>> a = array.array('c', ' ' * 1000)
>>> c = 'a'; i = 1
>>> struct.pack_into('ci', a, -0, c, i)
>>> a
array('c', 'a\x00\x00\x00\x01\x00\x00\x00 ...
Deux possibilités sautent immédiatement à l'esprit: p>
Quelle version de Python utilisez-vous? J'ai joué avec des structures un peu mais j'ai vu cela auparavant.