在StackOverflow上有许多关于Python模块用于保存和加载数据的零散帖子。 我自己熟悉json和pickle,也听说过pytables。可能还有其他模块。而且,每个模块似乎都适用于特定目的,并具有自己的限制(例如,使用pickle加载大型列表或字典需要花费很长时间,如果工作的话)。因此,拥有一个正确的概述是很好的。 那么,您能帮助提供一个综合的模块列表,用于保存和加载数据,为每个模块描述: 模块的一般目的, 其限制, 为什么您会选择这个模块而不是其他模块?
marshal: 优点: 可以以二进制格式读写Python值,因此比基于字符的pickle快得多。 缺点: 不支持所有Python对象类型。一些不支持的类型,如内置类的子类,将显示为正确的编组和反编组 未经意或恶意构造的数据可能不安全。 如果需要,Python维护者保留修改后向不兼容的方式进行编组格式的权利。 shelve: 优点: 架构中的值可以是任意Python对象。 缺点: 不支持对架构对象的并发读/写访问 ZODB(由@Duncan建议) 优点: 透明持久性 完整的事务支持 可插拔存储 可扩展的架构 缺点: 不是标准库的一部分。 无法(轻松地)重新加载数据,除非用于持久化的原始Python对象模型可用(考虑版本困难和数据可移植性)