In Python sto accedendo a un file binario leggendolo in una stringa e utilizzando quindi struct.unpack(...)
. Ora voglio scrivere su quella stringa usando struct.pack_into(...)
, ma ottengo l'errore "Impossibile utilizzare la stringa come buffer modificabile". Quale sarebbe un buffer adatto per l'uso con il modulo struct
?Che cosa è un buffer adatto per il modulo struct di Python
risposta
Se non si sta tentando di comprimerlo in un oggetto specifico, è sufficiente utilizzare struct.pack
per restituire una stringa.
Altrimenti, ctypes.create_string_buffer
è un modo per ottenere un buffer mutabile.
Il buffer è la memoria di una semplice macchina virtuale, quindi ho bisogno di comprimere un oggetto specifico. La memoria è piccola ma copiare 128-512k per un singolo accesso di memoria non è un'opzione. – mdm
Come indicato in un'altra risposta, struct_pack
è probabilmente tutto ciò che serve e deve essere utilizzato. Tuttavia, oggetti di tipo array supportano il protocollo buffer e possono essere modificate:
>>> 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 ...
Il protocollo buffer originale era un po 'di hack principalmente per estensioni C. È stato deprecato e sostituito da un new C-level buffer API and memoryview objects in Python 3 (e nel prossimo 2.7).
- 1. Rendi FILE * struct map in un buffer?
- 2. Che cosa è un sostituto adatto di NHibernate/Iesi.Collezioni.Generic.ISet <T>?
- 3. di struct è privato quando si importa il modulo
- 4. Esiste un modulo per Python che esegue il riconoscimento facciale?
- 5. Il modulo Ltree di PostgreSQL è adatto per i commenti con thread?
- 6. Che cosa è un buon sostituto per paramiko in python 3? O c'è una porta di paramiko per python 3?
- 7. Per che cosa è il csilogfile?
- 8. prese Python buffer
- 9. Che cosa significa * (int *) (buffer) significa?
- 10. Per che cosa è il metodo restTemplate.exchange()?
- 11. LLVM è adatto per le lingue parallele?
- 12. Nei buffer del protocollo di Google, qual è il protocollo/modello di protocollo adatto per le eccezioni?
- 13. Che cosa è import gv in python?
- 14. C# è adatto per un linguaggio di scripting?
- 15. Cosa potrebbe causare l'importazione di un modulo python due volte?
- 16. Haskell è adatto per l'informatica quantistica?
- 17. Che cosa è termios.TIOCGWINSZ
- 18. C struct in Python
- 19. Che cosa è un dispatcher
- 20. Che cosa usare per Python string.find?
- 21. Cosa rende un modulo un modulo pragmatico?
- 22. cosa indica il nodo structef struct * NODE?
- 23. Che cos'è un modulo Python congelato?
- 24. Per che cosa si usa Python?
- 25. Per che cosa è il parametro namespace di MapRoute?
- 26. Per che cosa è il fsync di MongoDB?
- 27. Twitter Bootstrap è adatto per touch screen?
- 28. Creazione di un modulo python
- 29. Per che cosa è il plug-in V9 di L9?
- 30. Per che cosa è il file reposog.config di Nuget?
Quale versione di python stai usando? Ho giocato un po 'con le strutture ma non l'ho mai visto prima. – chrism1
Sto usando Python 2.6.4 – mdm