Est-ce que le fichier pickle de python est multi-plateforme?
J'ai créé un petit script python de la mine. J'ai enregistré le fichier pickle sur Linux et sur windows, puis de nouveau utilisé à nouveau sur Linux, mais maintenant que le fichier ne fonctionne pas sur Linux, mais il fonctionne parfaitement sur windows.
Est est ainsi que python est coss-plate-forme, mais le fichier pickle ne l'est pas.
Est-il une solution à cela???
source d'informationauteur vikithakar
Vous devez vous connecter pour publier un commentaire.
Python cornichon est parfaitement croix-plate-forme.
Cela est probablement dû à EOL (Fin De Ligne) les différences entre Windows et Linux. Assurez-vous d'ouvrir votre cornichon fichiers en mode binaire à la fois lors de l'écriture et à la lecture, à l'aide de open()'s "wb" et "rb" modes respectivement.
Remarque: en Passant cornichons entre les différentes versions de Python peut causer des problèmes, essayez donc de disposer de la même version sur les deux plates-formes.
La
pickle
module prend en charge plusieurs formats de données différents. Si vous spécifiez un particulier pickle format au lieu d'utiliser la valeur par défaut (0), vous pourriez être en cours d'exécution dans la croix-plate-forme de fichier binaire de problèmes. Vous pouvez utiliser ASCII, cornichon fichiers en spécifiant le protocole 0.Peut-être que vous n'ouvrez pas le fichier en mode binaire? Voir cette question stackoverflow
Pickle doit être multi-plateforme, il y a versioning/problèmes de protocole, (voir http://docs.python.org/library/pickle.html#data-stream-format), mais en général, si vous utilisez la même version de python sur votre windows et unix, les boîtes, ils devraient être interopérables.
Si vous êtes à l'aide de cornichon comme un mécanisme de transport de données, vous pourriez envisager de moins-de la mise en œuvre des formats spécifiques pour le stockage de données, tels que json, xml, csv, yaml, etc.
Vous pouvez utiliser
json
au lieu depickle
. Si il peut sauvegarder vos données, vous savez qu'il est multi-plateforme.Une idée intéressante à essayer est PyON (Python Object Notation). La version actuelle semble fonctionner, au moins pour les cas simples selon mes tests. Il semble y avoir un désaccord sur les listes de diffusion de savoir si le projet est une bonne idée, cependant.