根据您的描述,JSON 编码是安全且快速的解决方案。python2.6中有一个json模块,可以这样使用:
import json
obj = {'key1': 'value1', 'key2': [1, 2, 3, 4], 'key3': 1322}
encoded = json.dumps(obj)
obj = json.loads(encoded)
JSON 格式是人类可读的,与 python 中的字典字符串表示非常相似。并且没有任何像泡菜这样的安全问题。如果没有python2.6可以安装cjson或者simplejson
您不能使用 JSON 来保存像 Pickle 这样的 python 对象。但是你可以用它来保存:字符串、字典、列表……对于大多数情况来说已经足够了。
解释为什么泡菜不安全。来自 python文档:
围绕 pickle 和 cPickle 模块的大多数安全问题都涉及 unpickling。没有已知的与 pickle 相关的安全漏洞,因为您(程序员)控制 pickle 将与之交互的对象,并且它产生的只是一个字符串。
但是,对于 unpickling,对来源可疑的不受信任的字符串进行 unpickle绝不是一个好主意,例如从套接字读取的字符串。这是因为 unpickling 可能会创建意外的对象,甚至可能会运行这些对象的方法,例如它们的类构造函数或析构函数……这个故事的寓意是,您应该非常小心应用程序 unpickles 的字符串的来源。
有一些方法可以保护自己,但在你的情况下使用 JSON 更容易。