_pickle.UnpicklingError: could not find MARK
_pickle.UnpicklingError: could not find MARK
我在使用空集成员 participants 对 EventFrame 的对象(列表)进行酸洗时引发了类似 UnicodeDecodeError 的异常.
class EventFrame:
"""Frame for an event"""
def __init__(self, id=0):
...
self.participants = set()
...
不为空的时候没有问题,所以我先给participants设置了个东西,然后pickle了。但是在运行时可能会发生 participants 再次被清空的情况。
所以我在这种情况下尝试手动删除对象。之后我又用泡菜把它扔掉了。
if len(frame.participants) == 0:
frame_list.remove(frame)
这似乎不是一个好的选择,因为这个 UnpicklingError 被提出:
....
frame_list.append (pickle.load(f))
_pickle.UnpicklingError: could not find MARK
我不知道它是什么意思,也找不到任何有用的信息。
注意加载 pickle 文件时出现此错误。
这是我 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()
错误_pickle.UnpicklingError: could not find MARK
是因为文件的偏移量不在开头。解决方案是在加载 pickle 之前调用 f.seek(0)
。
我一开始遇到这个错误 _pickle.UnpicklingError: could not find MARK
,但那是因为我在模块名称中使用了 class 名称。一旦我删除它,它就像一个魅力!
我在使用空集成员 participants 对 EventFrame 的对象(列表)进行酸洗时引发了类似 UnicodeDecodeError 的异常.
class EventFrame:
"""Frame for an event"""
def __init__(self, id=0):
...
self.participants = set()
...
不为空的时候没有问题,所以我先给participants设置了个东西,然后pickle了。但是在运行时可能会发生 participants 再次被清空的情况。
所以我在这种情况下尝试手动删除对象。之后我又用泡菜把它扔掉了。
if len(frame.participants) == 0:
frame_list.remove(frame)
这似乎不是一个好的选择,因为这个 UnpicklingError 被提出:
....
frame_list.append (pickle.load(f))
_pickle.UnpicklingError: could not find MARK
我不知道它是什么意思,也找不到任何有用的信息。
注意加载 pickle 文件时出现此错误。
这是我 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()
错误_pickle.UnpicklingError: could not find MARK
是因为文件的偏移量不在开头。解决方案是在加载 pickle 之前调用 f.seek(0)
。
我一开始遇到这个错误 _pickle.UnpicklingError: could not find MARK
,但那是因为我在模块名称中使用了 class 名称。一旦我删除它,它就像一个魅力!