使用Pickle还是json?

165 投票
8 回答
134811 浏览
提问于 2025-04-15 19:15

我需要把一个小的 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(或者根据你的需求选择其他合适的格式)。

撰写回答