Я просматриваю список маринованных файлов, а некоторые из моих файлов имеют ошибки EOF, а это значит, что они неправильно записывались. Есть ли способ обойти файлы, которые имеют эти ошибки, и перейти к следующему файлу вместо остановки всего скрипта?EOF Error Pickle
-2
A
ответ
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
0
Прежде всего, убедитесь, что вы открываете файлы маринованные в двоичном режиме, поскольку это является потенциальной причиной ошибки EOF при чтении/записи данных маринованные.
Когда вы читаете файлы рассола, используйте режим rb
при звонке open()
. Аналогично, если это ваш код, который пишет файлы 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)
Отлично, спасибо! – Kate