_pickle.UnpicklingError: konnte nicht finden, MARK

Ich bekam Ausnahmen wie UnicodeDecodeError ausgelöst, wenn Beizen (eine Liste) - Objekte von EventFrame mit einem Mitglied Teilnehmer das war eine leere Menge.

class EventFrame:
    """Frame for an event"""
    def __init__(self, id=0):
        ...
        self.participants = set()
        ...

Wenn es war nicht leer, es gab keine Probleme, so dass ich einen ersten Teilnehmer zu etwas, und dann gebeizt es. Aber während der Laufzeit kann es passieren, dass Teilnehmer ist wieder entleert.

Also habe ich versucht manuell zu löschen, das Objekt, in diesem Fall. Nach, dass ich warf es wieder mit Gurke.

if len(frame.participants) == 0:
    frame_list.remove(frame)

Dass doesn ' T scheinen eine gute Wahl zu sein, weil diese UnpicklingError angesprochen wurde:

....
frame_list.append (pickle.load(f))
_pickle.UnpicklingError: could not find MARK

Ich weiß nicht, was es bedeutet, und ich konnte nicht finden, dass irgendetwas nützliches darüber.

Hinweis, dass dieser Fehler ausgelöst wird, der auf das laden der pickle-Datei.

Hier ist der Weg, ich bin picklng und 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()

und dumping:

f = open("myfile", "r+b")
pickle.dump(frame_list, f)
f.close()   
  • Ich habe um die Datei zu löschen und erstellen Sie ihn neu, dann dump die frame_list wieder. Das funktioniert.
InformationsquelleAutor Sadik | 2016-03-08
Schreibe einen Kommentar