我知道 Python pickle 是一种以尊重对象编程的方式“存储”Python 对象的方法 - 不同于以 txt 文件或 DB 编写的输出。
您对以下几点有更多的细节或引用:
- pickle 对象“存储”在哪里?
- 为什么 pickle 比存储在数据库中更能保留对象表示?
- 我可以将 pickle 对象从一个 Python shell session 检索到另一个吗?
- 您是否有重要的例子说明序列化很有用?
- pickle 序列化是否意味着数据“压缩”?
换句话说,我正在寻找关于 pickle 的文档 - Python.doc 解释了如何实现 pickle ,但似乎没有深入了解有关序列化的使用和必要性的细节。
最佳答案
Pickling 是一种将 python 对象(list、dict 等)转换为字符流的方法。这个想法是这个字符流包含在另一个 python 脚本中重建对象所需的所有信息。
至于 pickle 信息存储在哪里,通常会这样做:
with open('filename', 'wb') as f:
var = {1 : 'a' , 2 : 'b'}
pickle.dump(var, f)
这会将我们 var
字典的 pickle 版本存储在“文件名”文件中。然后,在另一个脚本中,您可以从此文件加载到变量中,然后重新创建字典:
with open('filename','rb') as f:
var = pickle.load(f)
pickle 的另一个用途是如果您需要通过网络传输此字典(可能使用套接字或其他东西)。您首先需要将其转换为字符流,然后您可以通过套接字连接发送它。
此外,这里没有“压缩”可言...它只是一种将一种表示(在 RAM 中)转换为另一种(在“文本”中)的方法。
About.com 对 pickle 有很好的介绍 here .
关于Python 序列化 - 为什么pickle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8968884/