无法在Mac上解压缩在Windows上进行腌制的文件

时间:2009-11-17 13:40:31

标签: python windows macos pickle

我有一个简单的类,我正在腌制(转储)到一个文件。在OS X上运行正常,在Windows上运行正常。

然而,在Windows上,我可以正常加载/取消对象 - 当窗口然后将这个文件腌制并将其保存回磁盘时,它在OS X上变得不可读(尽管在Windows中它仍然表现正常)。

我从OS X返回的错误是它无法导入require类。

我很困惑,因为只要我不在窗户中腌制任何东西,这一切都可以正常工作! (即便如此,它在Windows中仍能正常工作)

我听说它可能是行结尾,我的其他想法可能与使用的操作系统不同的编码类型有关?但我真的不知道该尝试什么来完全诊断和/或解决这个问题,所以任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:5)

使用最新协议版本的Pickle并在所有情况下以二进制模式打开文件。这应该可以解决问题。

答案 1 :(得分:3)

它将是行结尾 - 如果你在ascii模式'r'或'w'中使用ASCII pickle打开文件 - 如果你在二进制模式'rb''wb'中使用二进制pickle打开。来自docstring:

  

默认值       协议为0,向后兼容。 (协议0是       只能写入文本中打开的文件的协议       模式并成功回读。使用更高的协议时       小于0,确保文件以二进制模式打开,两者都是       酸洗和去除。)