En Python estoy accediendo a un archivo binario leyéndolo en una cadena y luego usando struct.unpack(...)
. Ahora quiero escribir en esa cadena usando struct.pack_into(...)
, pero obtengo el error "No se puede usar la cadena como buffer modificable". ¿Cuál sería un buffer adecuado para usar con el módulo struct
?¿Qué es un tampón adecuado para el módulo struct de Python
Respuesta
Si usted no está tratando de hacer las maletas en un objeto específico, sólo tiene que utilizar struct.pack
para devolver una cadena.
De lo contrario, ctypes.create_string_buffer
es una manera de obtener un tampón mutable.
El búfer es la memoria de una máquina virtual simple, así que tengo que empacar en un objeto específico. La memoria es pequeña, pero copiar 128-512k para acceder a una sola memoria no es una opción. – mdm
Como se señaló en otra respuesta, struct_pack
es probablemente todo lo que necesita y que debe utilizar. Sin embargo, los objetos de tipo array soportan el protocolo tampón y pueden ser modificados:
>>> 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 ...
El protocolo búfer original era un poco de un corte principalmente para extensiones C. Ha quedado en desuso y reemplazado por un new C-level buffer API and memoryview objects en Python 3 (y en el próximo 2.7).
dos posibilidades saltan inmediatamente a la mente:
- 1. ¿Qué tan adecuado es un DVCS para el entorno corporativo?
- 2. ¿Cuál es el método adecuado para imprimir excepciones de Python?
- 3. ¿Qué CMS es adecuado para mí?
- 4. Script de instalación adecuado para un pequeño programa de Python (No módulo) en Linux
- 5. ¿El módulo Ltree de PostgreSQL es adecuado para los comentarios de subprocesos?
- 6. ¿MapReduce es adecuado para mí?
- 7. ¿Qué es un reemplazo adecuado para el operador SQL Like para aumentar el rendimiento?
- 8. Elegir el formato en el paquete() usando el módulo struct en python
- 9. Es adecuado para un desarrollador sin servidor
- 10. ¿Es web2py adecuado para un gran sitio web público?
- 11. empaquetado y desempaquetado array/string de longitud variable utilizando el módulo struct en python
- 12. ¿Qué tipo de Jfreechart es más adecuado para histogramas?
- 13. C struct en Python
- 14. Dado el nombre de un paquete de Python, ¿cuál es el nombre del módulo para importar?
- 15. ¿Para qué tipo de aplicación/utilización es más adecuado YAML?
- 16. ¿Qué módulo para Nginx es el mejor para HTTP PUSH?
- 17. ¿Comprueba si un parámetro es un módulo de Python?
- 18. struct objects en python
- 19. módulo python para nslookup
- 20. Módulo SSH para python
- 21. Python - "Struct arrays"
- 22. ¿Qué es un módulo administrado .NET?
- 23. ¿Es LLVM adecuado para idiomas paralelos?
- 24. ¿Es un administrador de contexto adecuado para este trabajo?
- 25. ¿Qué algoritmo de deconvolución es el más adecuado para eliminar el desenfoque de movimiento del texto?
- 26. Boost Python: Problemas para importar un módulo
- 27. Diferencia entre el módulo <name> = struct .. fin y módulo tipo <name> = struct .. end?
- 28. Módulo Python para el marcado wiki
- 29. ¿Hay un módulo Equivlant Perl para el módulo pydbg?
- 30. ¿El proyecto Lombok es adecuado para grandes proyectos de Java?
¿Qué versión de Python está usando? He jugado con las estructuras un poco, pero no lo había visto antes. – chrism1
Estoy usando Python 2.6.4 – mdm