如何在当前python会话中保存所有变量?

我想将所有变量保存在当前的python环境中。似乎一种选择是使用“棘手”模块。但是,我不想这样做有两个原因:

1)我必须为每个变量调用pickle.dump()
2)当我想检索变量时,必须记住保存变量的顺序,然后执行pickle.load()来检索每个变量。

我正在寻找可以保存整个会话的命令,以便在加载此保存的会话时,将还原所有变量。这可能吗?

非常感谢!
高拉夫

编辑:我想我不介意为每个要保存的变量调用pickle.dump(),但是记住保存变量的确切顺序似乎是一个很大的限制。我想避免这种情况。


达令说
浏览 2435回答 3
3回答

慕丝7291255

如果使用shelve,则不必记住对象的腌制顺序,因为shelve它为您提供了类似字典的对象:搁置您的工作:import shelveT='Hiya'val=[1,2,3]filename='/tmp/shelve.out'my_shelf = shelve.open(filename,'n') # 'n' for newfor key in dir():    try:        my_shelf[key] = globals()[key]    except TypeError:        #        # __builtins__, my_shelf, and imported modules can not be shelved.        #        print('ERROR shelving: {0}'.format(key))my_shelf.close()恢复:my_shelf = shelve.open(filename)for key in my_shelf:    globals()[key]=my_shelf[key]my_shelf.close()print(T)# Hiyaprint(val)# [1, 2, 3]

Helenr

坐在这里并未能将其另存globals()为字典,我发现您可以使用莳萝库对会话进行腌制。可以使用以下方法完成:import dill                            #pip install dill --userfilename = 'globalsave.pkl'dill.dump_session(filename)# and to load the session again:dill.load_session(filename)

繁星coding

这是使用spyderlib函数保存Spyder工作区变量的方法#%%  Load data from .spydata filefrom spyderlib.utils.iofuncs import load_dictionaryglobals().update(load_dictionary(fpath)[0])data = load_dictionary(fpath)#%% Save data to .spydata filefrom spyderlib.utils.iofuncs import save_dictionarydef variablesfilter(d):    from spyderlib.widgets.dicteditorutils import globalsfilter    from spyderlib.plugins.variableexplorer import VariableExplorer    from spyderlib.baseconfig import get_conf_path, get_supported_types    data = globals()    settings = VariableExplorer.get_settings()    get_supported_types()    data = globalsfilter(data,                                            check_all=True,                         filters=tuple(get_supported_types()['picklable']),                         exclude_private=settings['exclude_private'],                         exclude_uppercase=settings['exclude_uppercase'],                         exclude_capitalized=settings['exclude_capitalized'],                         exclude_unsupported=settings['exclude_unsupported'],                         excluded_names=settings['excluded_names']+['settings','In'])    return datadef saveglobals(filename):    data = globalsfiltered()    save_dictionary(data,filename)#%%savepath = 'test.spydata'saveglobals(savepath) 请让我知道这对你有没有用。大卫·BH
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python