如何解开 python 中的文件?

How to unpickle the files in python?

我有一些已训练机器学习模型的 pickle 文件。 我想解开它们并想查看代码。我尝试编写这些代码行。

import pickle
with open('cv.pickle','rb') as f:
    data_1 = pickle.load(f)

此代码出现以下错误:

AttributeError                            Traceback (most recent call last)

<ipython-input-5-25ea81eeb394> in <module>()
      2 
      3 with open('cv.pickle','rb') as f:
----> 4     data_1 = pickle.load(f)

AttributeError: Can't get attribute 'dummy_fn' on <module '__main__'>

Pickle 不只存储变量、class 名称、导入路径等代码。这就是为什么如果支持代码发生变化,pickle 很容易产生问题。

打开 pickle 的代码需要能够到达 pickle 文件中引用的 classes/functions。这里的问题是您的 pickle 文件引用了 dummy_fn 但该函数在您正在解压的主模块中不存在。

您似乎是在 ipython 环境中阅读本文。以创建 pickle 文件时相同的方式定义函数和 classes,然后打开文件。

为了缓解问题,您可以在模块中定义这些 classes/functions,然后在保存文件和加载文件时只导入模块。