Python Pickle:什么可能导致堆栈索引超出范围错误?

时间:2010-06-12 21:50:57

标签: python pickle

我收到了这个错误:

  File "C:\Python26\lib\pickle.py", line 1374, in loads
    return Unpickler(file).load()
  File "C:\Python26\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "C:\Python26\lib\pickle.py", line 1075, in load_obj
    k = self.marker()
  File "C:\Python26\lib\pickle.py", line 874, in marker
    while stack[k] is not mark: k = k-1
IndexError: list index out of range

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

“受损文件”是一般性解释;最可能的原因是您忘记打开文件(在Windows中)为'rb'(“读取二进制”)并且使用二进制协议(即除了旧的,慢速默认协议0之外的任何协议)完成酸洗,仅ascii,基本上只存在于遗留目的,制作更大的文件,并有一些限制)。

答案 1 :(得分:0)

答:我试图在Google App Engine模型的未初始化字段上调用pickle.loads()