为什么我不能在不同的模块中加载泡菜?

时间:2017-04-26 08:05:40

标签: python pandas pickle

我在module1中创建了一个名为tabla_precios的pickle,我期待在module2中打开它。 pickle在module1中的函数中打开。

目前我正在导入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

我期待在另一个模块中导入泡菜。

1 个答案:

答案 0 :(得分:1)

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