[英]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.