【问题标题】:why I cannot load the pickle in a different module?为什么我不能在不同的模块中加载泡菜?
【发布时间】:2017-09-23 12:15:21
【问题描述】:

我在模块 1 中创建了一个名为 tabla_precios 的泡菜,我期待在模块 2 中打开它。 泡菜在模块 1 中的一个函数中打开。

目前我正在导入 module2 中的函数,但我认为这不是最有效的方法,因为我认为每次执行不同模块中的模块时我都在制作泡菜,不是吗?

因此,我想直接在不同的模块中导入泡菜,但我不知道该怎么做。

这是我尝试过的:

import pandas as pd
import pickle

main_df=pd.DataFrame()

pickle_out=open ('tabla_precios.pickle','wb')
pickle.dump(main_df,pickle_out)
pickle_out.close()

print(tabla_precios)

报错:

name 'tabla_precios' is not defined

我期待在不同的模块中导入泡菜。

【问题讨论】:

  • print(tabla_precios):您没有定义tabla_precios 变量,但您将其传递给print

标签: python pandas pickle


【解决方案1】:

pickle 只存储对类和函数的引用,而不是函数本身。如果你腌制一个类,当你取消腌制它时,类定义需要在命名空间中。 python中的模块只导入一次,然后保存在sys.modules中。重新导入此模块不会导致代码执行多次。要对其进行测试,请尝试在模块中添加 print 语句并查看它是否被多次调用。

【讨论】:

    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2011-04-14
    • 2020-10-05
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多