繁体   English   中英

无法加载pickle文件

[英]Unable to load pickle file

我之前能够加载一个pickle文件。 我用不同的名字保存了一个新文件。 我无法加载旧文件或新文件。 这是一个无赖,因为它包含我努力擦洗的数据。

这是我用来保存的代码:

def pickleStore():
    pickle.dump(store, open("...shelf3.p", "wb"))

这是我用来重新加载的代码:

def pickleLoad():
    store = pickle.load(open(".../shelf3.p","rb" ) )

创建的文件存在,我运行pickleLoad()没有出现错误,面板变量资源管理器中也没有显示任何变量。 如果我尝试加载不存在的文件,我会收到一条错误消息。

我正在运行spyder,python 3.5。

有什么建议么?

如果要从函数写入模块级变量,则需要使用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()

作为一种通用且更通用的方法,我建议这样的事情:

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)

我已将此代码段添加到多个项目中,以减少多次重写相同的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM