He creado un pequeño script de python. Guardé el archivo pickle en Linux y luego lo usé en Windows y luego lo volví a usar en Linux, pero ahora ese archivo no funciona en Linux pero funciona perfectamente en Windows. Is es para que python sea coss-platform pero el archivo pickle no lo es. ¿Hay alguna solución para esto?¿Está el archivo pickle de python multiplataforma?
Respuesta
Python's pickle es perfectamente multiplataforma.
Esto probablemente se deba a diferencias de EOL (fin de línea) entre Windows y Linux. Asegúrese de abrir sus archivos de pickle en modo binario tanto al escribirlos como al leerlos, usando los modos "wb" y "rb" de open(), respectivamente.
Nota: Pasar pepinillos entre diferentes versiones de Python puede causar problemas, por lo tanto intente tener la misma versión en ambas plataformas.
'pickle' es [se garantiza que es" compatible con versiones anteriores "] (http://docs.python.org/2/library/pickle.html#relationship-to-other-python-modules). Supongo que esto significa que las versiones más nuevas leerán encurtidos de versiones anteriores, pero es posible que las versiones anteriores no puedan leer los encuadres de las versiones más recientes. – max
Puede usar json
en lugar de pickle
. Si puede guardar tus datos, sabes que es una plataforma cruzada.
No bajamos, pero usar json para esta situación parece un poco incómodo. – ChristopheD
Realmente depende de lo que esté guardando. Si se trata de listas de números y cadenas, JSON es genial. Si se trata de diccionarios e instancias de clase, no tanto. – steveha
Estoy guardando instancias de clase – vikithakar
¿Quizás no abra el archivo en modo binario? Ver this stackoverflow question
El pickle
módulo supports several different data formats. Si especifica un formato de pepinillo en particular en lugar de usar el valor predeterminado (0), es posible que se encuentre con problemas de archivos binarios multiplataforma. Puede usar archivos de salmuera ASCII sin formato especificando el protocolo 0.
Pickle debe ser multiplataforma, hay problemas de control de versiones/(ver http://docs.python.org/library/pickle.html#data-stream-format), pero en general si está utilizando el mismo release de python en sus ventanas y cajas de Unix, deberían ser interoperables.
Si utiliza salmuera como un mecanismo de transporte de datos, es posible que desee considerar formatos menos específicas de la implementación para el almacenamiento de datos, tales como JSON, XML, CSV, yaml, etc.
Una idea interesante prueba es PyON (Notación de Objeto Python). La versión actual parece funcionar al menos para casos simples según mis pruebas. Sin embargo, parece haber habido algún desacuerdo en las listas de correo si el proyecto es una buena idea.
- 1. python multiprocessing pickle protocol
- 2. serialización Python - ¿Por qué pickle?
- 3. Cargando un gran diccionario de Python Pickle
- 4. Pickle vs salida a un archivo en python
- 5. Cómo usar append with pickle en python?
- 6. Comprender la inseguridad de Python Pickle
- 7. Python pickle: corregir los caracteres antes de cargar
- 8. copy.deepcopy vs pickle
- 9. JSON vs. Pickle security
- 10. Pickle alternatives
- 11. ¿Cómo puedo leer una base de datos/archivo de Python Pickle desde C?
- 12. Python: guardar objetos y usar pickle. la extensión de nombre de archivo
- 13. ¿Por qué python pickle load y dump inflan el tamaño de un objeto en el disco?
- 14. Biblioteca de notificaciones de Python multiplataforma
- 15. Casos de uso comunes para pickle en Python
- 16. Notificador de escritorio multiplataforma en Python
- 17. Guardar un diccionario en un archivo (alternativa a pickle) en Python?
- 18. Biblioteca MIDI simple, multiplataforma para Python
- 19. pickle cython clase
- 20. Espacio multiplataforma restante en el volumen usando python
- 21. Python no está escribiendo cadena completa en el archivo
- 22. Python 3.2 - readline() está salteando líneas en el archivo fuente
- 23. Cómo ejecutar una secuencia de comandos python sin especificar la extensión de archivo (solución multiplataforma)?
- 24. Detección de archivos ocultos multiplataforma
- 25. Registrador de teclas multiplataforma
- 26. Observador del sistema de archivos multiplataforma (Linux/OS X) (ejecuta el comando cuando el archivo cambia)
- 27. serialización rápida JSON (y comparación con Pickle) para la informática de clúster en Python?
- 28. ImportError: Ningún módulo llamado copy_reg pickle
- 29. Implementación de la aplicación Python Qt multiplataforma: Win, OSX, Linux
- 30. Buscando la funcionalidad de rsync multiplataforma en python, como rsync.py
Python pickle posiblemente espinoso. Problemas de la plataforma Pickle potencialmente prevenibles. Presente una posible propuesta de prevención de problemas, por favor. – aehiilrs