0

我知道pickle是一个对象持久性库,它可以让我将数据结构写到磁盘上,然后重新加载它。

与使用文本文件的“传统”方法相比,我为什么/何时会这样做?

编辑:实际上这不是表达问题的有用方式。我的意思是在什么情况下泡菜会更容易/更方便,什么时候会给我带来麻烦?什么样的数据或设计模式适合泡菜?

4

2 回答 2

5

当您想要存储非文本的 Python 对象时,不容易使用其他库(JSON、msgpack 等)进行序列化,并且不想编写自己的序列化和反序列化代码。

一般来说,pickle 应该是最后的序列化和反序列化方法:速度不快(msgpack更快更紧凑),不安全(永远不要使用 pickle 作为 cookie 或其他客户端的存储格式-可访问的数据!),不可互操作(不存在非 Python 语言的实现)......但它适用于其他地方通常不支持的对象和数据类型(尽管不是所有Python 对象)。

于 2012-05-10T21:26:47.730 回答
1

使用 pickle 或类似工具,您可以获得可用于重构这些对象的对象的文本表示。如果没有像 pickle 这样的东西,你就不能不编写自己的持久性代码。

于 2012-05-10T21:26:45.643 回答