Python读取pickle协议4错误:STACK_GLOBAL需要str

问题描述 投票:0回答:6

在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(文件) UnpicklingError:STACK_GLOBAL 需要 str

从同一文件对象读取可以解决问题。

使用 pandas 阅读也会出现同样的问题

python pandas pickle
6个回答
16
投票

我也遇到了这个错误,结果是我用 pickle 打开了一个 numpy 文件。 ;)


0
投票

事实证明这是已知问题。有问题页面 github


0
投票

我遇到了这个问题,只是在文件名末尾添加了

pckl


0
投票

我的问题是我试图在不同的 python 环境中进行 pickle 和 un-pickle - 请注意确保你的 pickle 版本匹配!


0
投票

也许这将是某人解决此错误的方法。 我需要加载一个 numpy 数组:

torch.load(file)

当我加载数组时,出现了这个错误。所需要做的就是将数组转换为张量。 例如:

result = torch.from_numpy(np.load(file))

0
投票

如果您在 YOLO V4 或 V7 模型中遇到问题,只需删除正在生成的 labels.cache 即可。这可能是由于各种 YOLO 模型的配置设置不同而导致的。对我来说,我的数据集已经有 .cache 文件,因此删除它可以帮助我解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.