我正在遍历一个Pickled文件列表,我的一些文件有EOF错误,这意味着它们没有正确写入。有没有办法循环出现这些错误的文件并继续下一个文件而不是整个脚本停止?
答案 0 :(得分:1)
使用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
答案 1 :(得分:1)
首先,确保以二进制模式打开pickle文件,因为这是读取/写入pickle数据时可能导致EOF错误的原因。
当您阅读pickle文件时,请在调用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)