我想在我当前的python环境中保存所有变量.似乎有一个选择是使用'pickle'模块.但是,我不想这样做有两个原因:
1)我必须为每个变量调用pickle.dump()
2)当我想要检索变量时,我必须记住保存变量的顺序,然后执行pickle.load()来检索每个变量.
我正在寻找一些可以保存整个会话的命令,这样当我加载这个保存的会话时,我的所有变量都会被恢复.这可能吗?
非常感谢!
拉夫
编辑:我想我不介意为我想保存的每个变量调用pickle.dump(),但记住保存变量的确切顺序似乎是一个很大的限制.我想避免这种情况.
unu*_*tbu 72
如果你使用shelve,你不必记住对象被腌制的顺序,因为shelve它给你一个类似字典的对象:
搁置你的工作:
import shelve
T='Hiya'
val=[1,2,3]
filename='/tmp/shelve.out'
my_shelf = shelve.open(filename,'n') # 'n' for new
for 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()
Run Code Online (Sandbox Code Playgroud)
恢复:
my_shelf = shelve.open(filename)
for key in my_shelf:
globals()[key]=my_shelf[key]
my_shelf.close()
print(T)
# Hiya
print(val)
# [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
use*_*273 55
坐在这里并且未能保存globals()为字典,我发现你可以使用dill库来挑选一个会话.
这可以通过使用:
import dill #pip install dill --user
filename = 'globalsave.pkl'
dill.dump_session(filename)
# and to load the session again:
dill.load_session(filename)
Run Code Online (Sandbox Code Playgroud)
一种很简单的方法可以满足您的需求。对我来说,它做得很好:
只需在“变量资源管理器”(Spider的右侧)上单击此图标: