3

我有一个简单的类,我正在酸洗(转储)到一个文件中。在 OS X 上可以正常工作,在 Windows 上可以正常工作。

但是,虽然在 Windows 上我可以很好地加载/取消提取对象 - 当 Windows 然后提取此文件并将其保存回磁盘时,它在 OS X 上变得不可读(尽管在 Windows 中它仍然表现正常)。

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

我很困惑,因为只要我不在 Windows 中腌制任何东西,这一切都可以正常工作!(即使那样它在 Windows 中仍然可以正常工作)

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

4

2 回答 2

5

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

于 2009-11-17T13:42:24.370 回答
3

它将是行尾 - 如果您在 ascii 模式 'r' 或 'w' 下使用 ASCII pickle 打开文件 - 如果您使用在二进制模式下打开的二进制 pickle 'rb' 'wb'。从文档字符串:

默认协议为 0,向后兼容。(协议 0 是唯一可以写入以文本模式打开的文件并成功读回的协议。当使用高于 0 的协议时,请确保文件以二进制模式打开,无论是在酸洗和取消酸洗时。)

于 2009-11-17T13:47:27.793 回答