在程序会话间保存复杂Python数据结构的最佳方法(pickle,json,xml,数据库等)

10 投票
4 回答
3351 浏览
提问于 2025-04-15 17:38

我在寻找一些建议,想知道在不同的程序运行中,保存复杂的Python数据结构的最佳方法是什么。

到目前为止,我想到了一些方法:

  • pickle/cpickle
  • json
  • jsonpickle
  • xml
  • 数据库(比如SQLite)

使用pickle是最简单和最快的方法,但我了解到,pickle生成的文件在不同版本的Python 2.x和3.x之间,或者在32位和64位的Python中,可能无法兼容。

Json只适用于简单的数据结构。jsonpickle似乎解决了这个问题,并且似乎是为了在不同版本的Python中都能使用而编写的。

将数据保存为XML或数据库也是可以的,但这需要额外的工作,因为我们需要手动进行数据的序列化。

谢谢,
Malcolm

4 个回答

2

你有没有看过 PySyck 或者 pyYAML 呢?

4

你漏掉了 marshalshelve 这两个模块。

另外,这个 Python文档页面讲解了持久化

15

你对pickle有个误解:它在不同的Python版本之间是可以正常工作的。你只需要选择一个所有你关心的Python版本都支持的协议版本就可以了。

你遗漏的一个技术是marshal,它在不同的Python版本之间并不能保证正常工作(顺便提一下,.pyc文件就是用这个方式写的)。

撰写回答