gpt4 book ai didi

python - pickle.load 不工作

转载 作者:太空狗 更新时间:2023-10-30 02:34:53 25 4
gpt4 key购买 nike

我得到一个文件,其中包含一个 Windows 用户测试结果的数据结构。他使用 pickle.dump 命令创建了这个文件。在 Ubuntu 上,我尝试使用以下程序加载此测试结果:

import pickle
import my_module

f = open('results', 'r')
print pickle.load(f)
f.close()

但是我在 pickle 模块中得到一个错误,没有名为“my_module”的模块。

问题可能是由于文件损坏,或者从 Widows 转移到 Linux 是原因吗?

最佳答案

问题在于 pickle 处理换行符的方式。某些换行符会破坏转储/加载数据中的模块名称。

以二进制模式存储和加载文件可能会有所帮助,但我也遇到了麻烦。经过长时间阅读文档和搜索后,我发现 pickle 处理几种不同的“协议(protocol)”来存储数据,并且由于向后兼容,它使用最旧的协议(protocol):协议(protocol) 0 - 原始的 ASCII 协议(protocol)。

用户可以通过在转储文件中存储数据时指定协议(protocol)关键字来选择现代协议(protocol),如下所示:

pickle.dump(someObj, open("dumpFile.dmp", 'wb'), protocol=2)

或者,通过选择可用的最高协议(protocol)(当前为 2)

pickle.dump(someObj, open("dumpFile.dmp", 'wb'), protocol=pickle.HIGHEST_PROTOCOL)

协议(protocol)版本存储在转储文件中,因此 Load() 函数会自动处理它。

问候

关于python - pickle.load 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com