繁体   English   中英

如何使用pickle.load()读取完整文件?

[英]How to read complete file usind pickle.load()?

假设,我想使用 pickle.load() 读取完整的文件,而不仅仅是一行。 我知道我可以使用try - except但还有其他方法可以阅读它吗?
我正在使用这个:


    import pickle
    d = {}
    for i in range(2):
        roll_no = int(input("Enter roll no: "))
        name = input("Enter name: ")
        d[roll_no] = name

     f = open("test.dat", "ab")
     pickle.dump(d, f)
     f.close()

     f = open("test.dat", "rb")
     while True:
         try:
            print(pickle.load(f))
        except EOFError:
            break

官方 Python 库在单个指令中不支持此功能。 您可以定义自己的助手 function 虽然:

import io
import pickle

from typing import List

def unpickle(file: io.IOBase) -> List[object]:
    result = []
    while True:
        try:
            result.append(pickle.load(file))
        except EOFError:
            break
    return result

然后你可以这样称呼它

with open('data.pickle', 'rb') as f:
    objects = unpickle(f)

objects将包含所有已在data.pickle中序列化的对象。

您可以使用file.tell查看您是否在 EOF

f = open("test.dat", "rb")
# go to end of file and get position
size = f.seek(0, 2)
# now return to the front and pull pickle records
f.seek(0)    
while f.tell() < size:
    print(pickle.load(f))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM