165 votes

Pickle ou JSON?

Je dois enregistrer sur le disque un petit objet dict dont les clés sont des chaînes et les valeurs sont ints , puis le récupérer . Quelque chose comme ça:

 {'juanjo': 2, 'pedro':99, 'other': 333}
 

Lequel et pourquoi est la meilleure option? Sérialiser avec cornichon ou avec simplejson?

J'utilise Python 2.6

131voto

Mike Graham Points 22480

Je préfère JSON à Pickle pour ma sérialisation. Unpickling peut exécuter du code arbitraire et utiliser pickle pour transférer des données entre programmes ou stocker des données entre des sessions constitue une faille de sécurité. JSON n'introduit pas de faille de sécurité et est normalisé, de sorte que les programmes peuvent être consultés par des programmes dans différentes langues, le cas échéant.

97voto

Håvard S Points 11152

Si vous n'avez aucune exigence d'interopérabilité (c'est-à-dire que vous n'utiliserez que les données avec Python) et qu'un format binaire convient, utilisez cPickle , qui vous permet de sérialiser très rapidement les objets Python.

Si vous voulez l’interopérabilité ou si vous voulez un format texte pour stocker vos données, utilisez JSON (ou un autre format approprié en fonction de vos contraintes).

52voto

kovshenin Points 4475

Vous pouvez également trouver cela intéressant, avec quelques graphiques à comparer: http://kovshenin.com/archives/pickle-vs-json-which-is-faster/

16voto

Paul Hildebrandt Points 1455

Json ou cornichon? Que diriez-vous de json et cornichon! Vous pouvez utiliser jsonpickle. Il est facile à utiliser et le fichier sur disque est lisible car c’est json.

http://jsonpickle.github.com/

6voto

br1ckb0t Points 409

Personnellement, je préfère généralement JSON car les données sont lisibles par l'homme. Certainement, si vous avez besoin de sérialiser quelque chose qu' JSON ne les prend pas, que l'utilisation Pickle.

Mais pour la plupart de stockage de données, vous n'aurez pas besoin de sérialiser des choses bizarres et JSON est beaucoup plus facile et vous pouvez toujours vous pop de l'ouvrir dans un éditeur de texte et vérifiez les données vous-même.

La vitesse c'est bien, mais pour la plupart des ensembles de données, la différence est négligeable - Python n'est généralement pas trop vite de toute façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X