在一个小型数据采集项目中,我们使用 Python 的 pickle
来存储记录的数据,即对于每个“事件”,我们将其添加到输出文件 f
中
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()
关于python - 在循环中从 Python pickle 文件加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675863/