使用Pickle还是json?
我需要把一个小的 dict
对象保存到磁盘上,这个字典的键是 str
类型,值是 int
类型的,然后再把它恢复回来。就像这样:
{'juanjo': 2, 'pedro':99, 'other': 333}
那么,最好的选择是什么,为什么呢?用 pickle
还是 simplejson
来序列化它呢?
我正在使用 Python 2.6。
8 个回答
52
你可能会觉得这个也很有意思,里面有一些图表可以进行比较:http://kovshenin.com/archives/pickle-vs-json-which-is-faster/
131
我更喜欢用JSON而不是pickle来进行数据的保存和传输。因为用pickle解压数据的时候,可能会运行一些不安全的代码,这样就有安全隐患了。而且如果用pickle在不同的程序之间传输数据或者在不同的使用场景中保存数据,就更容易出现安全问题。相比之下,JSON没有这些安全隐患,并且是一个标准格式,这样如果将来需要的话,不同语言的程序也能轻松读取这些数据。
97
如果你没有什么特别的要求,比如说你只是想用Python来处理数据,并且用二进制格式也没问题,那就可以选择cPickle。这个工具可以让你快速地把Python对象转换成可以存储的格式。
但如果你需要让不同的程序之间能够互相使用这些数据,或者你想用文本格式来保存数据,那就可以选择JSON(或者根据你的需求选择其他合适的格式)。