ошибка pickle: "EOFerror: ran out of input" при загрузке списка из файла
пытаюсь выгрузить из файла список в bytes-файле
with open(filename, 'rb') as f:
if f.read() == '':
debtList = []
else:
debtList = pcl.load(f)
уложенный здесь
with open(filename, 'wb') as f:
pcl.dump(debtList, f)
я получаю ошибку EOFError: Ran out of input при запуске, почему так происходит и что с этим делать?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
with open(filename, 'rb') as f:
if f.read() == '':
debtList = []
В этот момент файл f весь прочитан от начала и до конца, указатель установлен на конец файла. И я не очень понимаю, что и с чем вы тут сравниваете, работает ли нормально сравнение считанных байтов со строкой.
else:
debtList = pcl.load(f)
А здесь вы пытаетесь ещё раз прочитать уже прочитанный файл f с указателем, установленным на конец файла. Естественно, ничего вы уже не можете прочитать.
Решением может быть, например, установка указателя обратно на начало файла перед повторным его чтением:
else:
f.seek(0)
debtList = pcl.load(f)