如何解开 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,然后在保存文件和加载文件时只导入模块。
我有一些已训练机器学习模型的 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,然后在保存文件和加载文件时只导入模块。