如何读取泡菜文件?

新手上路,请多包涵

我创建了一些数据并像这样存储了几次:

 with open('filename', 'a') as f:
        pickle.dump(data, f)

每次文件大小增加,但是当我打开文件时

with open('filename', 'rb') as f:
    x = pickle.load(f)

我只能看到上次的数据。如何正确读取文件?

原文由 Kenenbek Arzymatov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 626
2 个回答

Pickle 一次序列化一个对象,并读回一个对象——pickle 的数据按顺序记录在文件上。

如果您只是简单地执行 pickle.load 您应该读取序列化到文件中的第一个对象(而不是您编写的最后一个对象)。

反序列化第一个对象后,文件指针位于下一个对象的开头 - 如果您再次调用 pickle.load ,它将读取下一个对象 - 一直执行到文件末尾。

 objects = []
with (open("myfile", "rb")) as openfile:
    while True:
        try:
            objects.append(pickle.load(openfile))
        except EOFError:
            break

原文由 jsbueno 发布,翻译遵循 CC BY-SA 3.0 许可协议

作为 pandas 0.22+ 的一部分,有一个 _readpickle 函数

import pandas as pd

obj = pd.read_pickle(r'filepath')

原文由 Taylrl 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题