【发布时间】:2016-08-03 12:26:35
【问题描述】:
我正在遍历 Pickled 文件列表,并且我的一些文件有 EOF 错误,这意味着它们没有正确写入。有没有办法循环出现这些错误的文件并继续到下一个文件而不是整个脚本停止?
【问题讨论】:
我正在遍历 Pickled 文件列表,并且我的一些文件有 EOF 错误,这意味着它们没有正确写入。有没有办法循环出现这些错误的文件并继续到下一个文件而不是整个脚本停止?
【问题讨论】:
使用try/except:
for pkl_file in pkls:
try:
obj = pickle.load(..) # or however you load the file
except EOFError:
continue
# rest of code, handling obj
【讨论】:
首先,确保您以二进制模式打开pickle文件,因为这是读取/写入pickle数据时出现EOF错误的潜在原因。
当您读取泡菜文件时,请在调用open() 时使用rb 模式。同样,如果是您的代码编写 pickle 文件,请通过指定模式 wb 确保文件以二进制模式写入。
第二次捕获异常并忽略它,其中“忽略”表示您发出警告消息,以便注意到任何真正糟糕的泡菜文件。
import cPickle as pickle
for filename in pickle_files:
try:
with open(filename, 'rb') as f:
data = pickle.load(f)
# use the data
except EOFError as exc:
print(exc)
【讨论】: