import os
import pickle
PICKLE_FILE = 'pickle.dat'
def main():
# append data to the pickle file
add_to_pickle(PICKLE_FILE, 123)
add_to_pickle(PICKLE_FILE, 'Hello')
add_to_pickle(PICKLE_FILE, None)
add_to_pickle(PICKLE_FILE, b'World')
add_to_pickle(PICKLE_FILE, 456.789)
# load & show all stored objects
for item in read_from_pickle(PICKLE_FILE):
print(repr(item))
os.remove(PICKLE_FILE)
def add_to_pickle(path, item):
with open(path, 'ab') as file:
pickle.dump(item, file, pickle.HIGHEST_PROTOCOL)
def read_from_pickle(path):
with open(path, 'rb') as file:
try:
while True:
yield pickle.load(file)
except EOFError:
pass
if __name__ == '__main__':
main()
你没有做任何事情,你只是加载文件。
将打印每行。(在第二个陈述中)
Pickle一次序列化单个对象,并读回单个对象- pickled数据按顺序记录在文件中。
如果您只需要
pickle.load
,那么您应该读取序列化到文件中的第一个对象(而不是您编写的最后一个对象)。在取消第一个对象的序列化之后,文件指针位于 对于下一个对象-如果您只是再次调用
pickle.load
,它将读取下一个对象-执行此操作直到文件结束。下面是一个如何编写和读取pickle文件的示例。请注意,如果继续将pickle数据追加到文件中,则需要继续从文件中读取数据,直到找到所需的内容或到达文件末尾时生成异常。这就是最后一个函数的功能。
相关问题 更多 >
编程相关推荐