_pickle.UnpicklingError: impossible de trouver la MARQUE

J'ai eu des exceptions comme le UnicodeDecodeError soulevées lors de la saumure (une liste d'objets de EventFrame avec un membre participants qui est un ensemble vide.

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

Quand elle n'était pas vide, il n'y avait pas de problèmes, j'ai donc d'abord définir participants à quelque chose et puis marinés elle. Mais au cours de l'exécution, il peut arriver que participants est vidé à nouveau.

J'ai donc essayé de supprimer manuellement l'objet dans ce cas. Après que j'ai perdu à nouveau à l'aide de cornichon.

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

Qui ne semble pas être un bon choix, parce que ce UnpicklingError a été soulevée:

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

Je ne sais pas ce que cela signifie et je ne pouvais pas trouver quelque chose d'utile.

Note que cette erreur est déclenchée sur le chargement du fichier pickle.

Ici est la façon dont je suis picklng et 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()

et d'immersion:

f = open("myfile", "r+b")
pickle.dump(frame_list, f)
f.close()   
  • J'ai supprimer le fichier et de créer de nouvelles, puis de vider le frame_list de nouveau. Qui fonctionne.
InformationsquelleAutor Sadik | 2016-03-08