相关疑难解决方法(0)

_pickle.UnpicklingError:找不到MARK

我得到的异常就像在使用一个空集的成员参与者的EventFrame的pickling(一个列表)对象时引发的UnicodeDecodeError.

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

当它不是空的时候,没有问题,所以我先把参与者设置成某种东西然后腌制它.但是在运行时期间,可能会再次清空参与者.

所以我尝试在这种情况下手动删除对象.之后,我再次使用泡菜将其倾倒.

if len(frame.participants) == 0:
    frame_list.remove(frame)
Run Code Online (Sandbox Code Playgroud)

这似乎不是一个好的选择,因为这个UnpicklingError被引发:

....
frame_list.append (pickle.load(f))
_pickle.UnpicklingError: could not find MARK
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么,我找不到任何有用的东西.

请注意,加载pickle文件时会引发此错误.

这是我挑选和解开的方式:

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()
Run Code Online (Sandbox Code Playgroud)

和倾销:

f = open("myfile", "r+b")
pickle.dump(frame_list, f)
f.close()   
Run Code Online (Sandbox Code Playgroud)

python pickle

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

pickle ×1

python ×1