在循环中从Python pickle文件加载数据?
在一个小型数据采集项目中,我们使用Python的在循环中从Python pickle文件加载数据?,python,pickle,Python,Pickle,在一个小型数据采集项目中,我们使用Python的pickle来存储记录的数据,即对于每个“事件”,我们使用 pkl.dump(event, f, pkl.HIGHEST_PROTOCOL) 其中将cPickle导入为pkl 在数据分析中,我们读取每个事件,但与普通文件不同,普通文件的处理方式非常优雅: with open(filename) as f: for line in f: do_something() 循环处理pickle文件中的所有数据这会变得有点尴尬:
pickle
来存储记录的数据,即对于每个“事件”,我们使用
pkl.dump(event, f, pkl.HIGHEST_PROTOCOL)
其中将cPickle导入为pkl
在数据分析中,我们读取每个事件,但与普通文件不同,普通文件的处理方式非常优雅:
with open(filename) as f:
for line in f:
do_something()
循环处理pickle文件中的所有数据这会变得有点尴尬:
with open(filename) as f:
try:
while True:
event = pkl.load(f)
do_something()
except (EOFError, UnpicklingError):
pass
是否可以使pickle读取更像上面的常规文件的示例?是的,确实如此。使用下面的生成器使事件在循环中可读:
def pickleLoader(pklFile):
try:
while True:
yield pkl.load(pklFile)
except EOFError:
pass
现在你可以简单地写下:
with open(filename) as f:
for event in pickleLoader(f):
do_something()