在程序会话间保存复杂Python数据结构的最佳方法(pickle,json,xml,数据库等)
我在寻找一些建议,想知道在不同的程序运行中,保存复杂的Python数据结构的最佳方法是什么。
到目前为止,我想到了一些方法:
- pickle/cpickle
- json
- jsonpickle
- xml
- 数据库(比如SQLite)
使用pickle是最简单和最快的方法,但我了解到,pickle生成的文件在不同版本的Python 2.x和3.x之间,或者在32位和64位的Python中,可能无法兼容。
Json只适用于简单的数据结构。jsonpickle似乎解决了这个问题,并且似乎是为了在不同版本的Python中都能使用而编写的。
将数据保存为XML或数据库也是可以的,但这需要额外的工作,因为我们需要手动进行数据的序列化。
谢谢,
Malcolm
4 个回答
4
另外,这个 Python文档页面讲解了持久化。
15
你对pickle有个误解:它在不同的Python版本之间是可以正常工作的。你只需要选择一个所有你关心的Python版本都支持的协议版本就可以了。
你遗漏的一个技术是marshal,它在不同的Python版本之间并不能保证正常工作(顺便提一下,.pyc文件就是用这个方式写的)。