Pickle:读取字典时的EOFError

4 投票
1 回答
2624 浏览
提问于 2025-04-16 20:30

我最近发现了一个叫做pickle的东西,真是太棒了。不过在我实际使用它的时候出现了错误。用一个只有一个项目的字典测试的时候没问题,但我的真实脚本有几千行代码,要把各种对象存储到maya里。我不知道这是否和代码的大小有关,我在这里看了很多帖子,但没有一个能具体解决我的错误。

我尝试过用所有的优先级来写代码,但都没有成功。

这是我的输出代码:

    output = open('locatorsDump.pkl', 'wb')
    pickle.dump(l.locators, output, -1)
    output.close()

这是我的读取代码:

    jntdump = open('locatorsDump.pkl', 'rb')
    test = pickle.load(jntdump)
    jntdump.close()

这是错误信息:

    # Error: Error in  maya.utils._guiExceptHook:
    #   File "C:\Program Files\Autodesk\Maya2011\Python\lib\site-packages\pymel-1.0.0-py2.6.egg\maya\utils.py", line 277, in formatGuiException
    #     exceptionMsg = excLines[-1].split(':',1)[1].strip()
    # IndexError: list index out of range
    # 
    # Original exception was:
    # Traceback (most recent call last):
    #   File "<maya console>", line 3, in <module>
    #   File "C:\Program Files\Autodesk\Maya2011\bin\python26.zip\pickle.py", line 1370, in load
    #     return Unpickler(file).load()
    #   File "C:\Program Files\Autodesk\Maya2011\bin\python26.zip\pickle.py", line 858, in load
    #     dispatch[key](self)
    #   File "C:\Program Files\Autodesk\Maya2011\bin\python26.zip\pickle.py", line 880, in load_eof
    #     raise EOFError
    # EOFError # 

1 个回答

4

试着用 pickle.dumps() 和 pickle.loads() 来做个测试。如果你没有收到同样的错误,那就说明问题和文件写入有关。

撰写回答