2010-08-26 100 views
5

我的程序在Windows上使用cpickle很好,我使用的是二进制模式,如'wb'或'rb'。当我在Linux上运行我的程序时,它仍然正常工作。cPickle.UnpicklingError:无效加载密钥

但是,当我试图取消从我的Windows平台上的Linux平台获得的文件,我得到这个有线消息说:cPickle.UnpicklingError:无效加载密钥' '。

任何人都可以请告诉我为什么?

看来我不能从Linux平台上取消任何文件。

顺便说一句,我运行的两个程序是相同的。

非常感谢。

回答

4

看看代码(http://svn.python.org/view/python/trunk/Modules/cPickle.c?revision=81029&view=markup),它看起来像是一个分析错误(加载密钥是一个pickle格式密钥)。这听起来像文件已被改变。

这些文件是如何从Linux传输到Windows的?如果它是FTP,你是否以二进制模式传输?

(您正在使用HIGHEST_PROTOCOL吧?)

+0

非常感谢!这是传输模式。二进制模式真的解决了这个问题! – beryl83 2010-08-26 18:15:42