шалун.UnpicklingError: не удалось найти Марка
у меня есть исключения вроде UnicodeDecodeError поднятый при мариновании (список) объектов EventFrame с членом участники это был пустой набор.
class EventFrame:
"""Frame for an event"""
def __init__(self, id=0):
...
self.participants = set()
...
когда он не был пуст, проблем не было, поэтому я сначала установил участники к чему-то, а затем мариновал его. Но во время выполнения может случиться так, что участники снова опустели.
поэтому я попытался вручную удалить объект в этом случай. После этого я бросил его снова, используя рассол.
if len(frame.participants) == 0:
frame_list.remove(frame)
это не кажется хорошим выбором, потому что это UnpicklingError был поднят:
....
frame_list.append (pickle.load(f))
_pickle.UnpicklingError: could not find MARK
Я не знаю, что это значит, и я не мог найти ничего полезного об этом.
Примечание что эта ошибка возникает при загрузке файла рассол.
вот как я picklng и unpickling:
f = open("myfile", "r+b")
frame_list = []
while 1:
try:
frame_list.append (pickle.load(f))
frame_list = sum(frame_list, [])
except EOFError:
break
f.close()
и сброс:
f = open("myfile", "r+b")
pickle.dump(frame_list, f)
f.close()
1 ответов
ошибка _pickle.UnpicklingError: could not find MARK
возникает, потому что смещение файла не находится в начале. Решение является вызов f.seek(0)
перед загрузкой рассол.