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

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

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

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

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

回答:

如果使用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()

恢复:

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]

以上是 如何在当前python会话中保存所有变量? 的全部内容, 来源链接: utcz.com/qa/398815.html

回到顶部