我以前能够加载一个pickle文件。我用不同的名字保存了一个新文件。我无法加载旧文件或新文件。这是一个无赖,因为它包含我努力磨砂的数据。
以下是我用来保存的代码:
def pickleStore():
pickle.dump(store, open("...shelf3.p", "wb"))
以下是我用来重新加载的代码:
def pickleLoad():
store = pickle.load(open(".../shelf3.p","rb" ) )
创建的文件存在,我运行pickleLoad()没有出现错误,面板变量资源管理器中也没有显示任何变量。如果我尝试加载不存在的文件,我会收到一条错误消息。
我正在运行spyder,python 3.5。
有什么建议吗?
答案 0 :(得分:2)
如果要从函数写入模块级变量,则需要使用global
关键字:
store = None
def pickleLoad():
global store
store = pickle.load(open(".../shelf3.p","rb" ) )
...或返回值并从模块级代码执行赋值:
store = None
def pickleLoad():
return pickle.load(open(".../shelf3.p","rb" ) )
store = pickleLoad()
答案 1 :(得分:1)
作为一种通用且更通用的方法,我建议这样的事情:
def load(file_name):
with open(simulation, 'rb') as pickle_file:
return pickle.load(pickle_file)
def save(file_name, data):
with open(file_name, 'wb') as f:
pickle.dump(data, f)
我已将此代码段添加到多个项目中,以减少多次重写相同的代码。