【问题标题】:Unable to unpickle a file on Mac that was pickled on Windows无法在 Mac 上取消在 Windows 上腌制的文件
【发布时间】:2010-12-17 11:08:14
【问题描述】:

我有一个简单的类,我正在酸洗(转储)到一个文件。在 OS X 上运行良好,在 Windows 上运行良好。

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

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

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

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

【问题讨论】:

    标签: python windows macos pickle


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-31
        • 2017-07-01
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多