如何读取泡菜文件?

发布于 2021-01-29 15:07:38

我创建了一些数据并将其存储了几次,如下所示:

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

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

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

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

关注者
0
被浏览
72
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Pickle一次序列化一个对象,然后读回一个对象-腌制的数据按顺序记录在文件上。

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

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看