我需要将一个小dict对象保存到磁盘,其对象的类型str和值是ints ,然后恢复它.像这样的东西:
{'juanjo': 2, 'pedro':99, 'other': 333}
Run Code Online (Sandbox Code Playgroud)
什么是最好的选择,为什么?用pickle或用simplejson?序列化?
我使用的是Python 2.6.
该泡菜模块文档右一开始说:
警告:pickle模块不能防止错误或恶意构造的数据.切勿取消从不受信任或未经身份验证的来源收到的数据.
然而,在限制全局变量的情况下,它似乎描述了一种使用允许对象的白名单来使unpickling数据安全的方法.
这是否意味着如果我使用RestrictedUnpickler仅允许某些"基本"类型的数据,或者是否存在此方法无法解决的其他安全问题,我是否可以安全地解开不受信任的数据?如果有,还有另一种方法可以使unpickling安全(显然代价是无法解开每个流)吗?
对于"基本类型",我的意思是:
boolstr,bytes,bytearrayint,float,complextuple,list,dict,set和frozenset我对Python很天真.但是,我所知道的是,两者都被用于序列化和反序列化.所以,我只是想知道它们之间的所有基本差异是什么?