1. ホーム
  2. python

[解決済み] 現在のPythonセッションのすべての変数を保存する方法は?

2022-10-22 06:06:24

質問

現在のpython環境にあるすべての変数を保存したいです。一つの選択肢として、'pickle'モジュールを使用することができるようです。しかし、私は2つの理由のためにこれをしたくありません。

  1. を呼び出さなければならない。 pickle.dump() を呼び出す必要があります。
  2. 変数を取り出したいときは、変数を保存した順番を覚えておいて、その順番で pickle.load() を実行して、各変数を取得する必要があります。

私は、セッション全体を保存し、この保存されたセッションをロードしたときに、すべての変数が復元されるような、何らかのコマンドを捜しています。これは可能ですか?

編集:私は、私が気にしないことを推測する呼び出し pickle.dump() を呼び出すのは構わないと思いますが、変数が保存された正確な順番を覚えておくことは大きな制約のように思えます。それは避けたい。

どのように解決するのですか?

もし シェルブ を使えば、オブジェクトを漬ける順番を覚えておく必要はありません。 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]