【发布时间】:2019-11-20 08:23:11
【问题描述】:
在 Python 3.7.5、ubuntu 18.04 中,pickle 读取会报错,
泡菜版本 4
示例代码:
import pickle as pkl
file = open("sample.pkl", "rb")
data = pkl.load(file)
错误:
UnpicklingError Traceback(最近调用 最后的) 在
----> 1 个数据 = pickle.load(file) UnpicklingError: STACK_GLOBAL 需要 str
从同一个文件对象中读取可以解决问题。
使用 pandas 阅读也会出现同样的问题
【问题讨论】:
-
Elbek 已正确指出他们收到的错误消息可能与已知问题有关。但是,当尝试加载根本不是 pickle 文件的文件时,也会出现相同的错误消息。例如,如果(就像我今天发生的那样),一个人不小心尝试通过
pickle.load加载一个包含 numpy 数组的文件,一个人收到与 Elbek 相同的错误消息。 -
我同意@AliceSchwarze。最可能的解释是您加载了使用 np.save 保存的 numpy 数组。
-
Numpy 加载/保存函数默认依赖pickle。