この記事では、Pythonのshelve
モジュールを使い、プログラム中の変数(リストや辞書など)をファイルに保存し、後で再利用する方法について解説します。これにより、プログラムを終了してもデータを永続化させることができます。
シェルフファイルへの変数の保存
shelve
モジュールは、Pythonのオブジェクトをキーと値のペアとしてファイルに格納します。操作方法は辞書と非常によく似ています。
ファイルを安全に扱うために、with
文を使ってシェルフファイルを開くのが現在の標準的な方法です。with
ブロックを抜けるとファイルは自動的に閉じられ、データが確実に保存されます。
import shelve
# 保存したいデータ
user_names = ["Taro", "Hanako", "Kenji"]
user_settings = {"theme": "dark", "language": "Japanese"}
# "my_app_data"という名前でシェルフファイルを開く
with shelve.open("my_app_data") as db:
# 辞書のようにキーを指定してデータを保存
db["users"] = user_names
db["settings"] = user_settings
print("データをシェルフファイルに保存しました。")
このコードを実行すると、my_app_data.bak
, my_app_data.dat
, my_app_data.dir
といった複数のファイルが生成され、この中にデータが格納されます。
シェルフファイルからの変数の読み込み
保存したデータを読み込むには、同じ名前でシェルフファイルを再度開きます。そして、保存時と同じキーを使ってデータにアクセスします。
import shelve
# "my_app_data"シェルフファイルを開いて読み込む
with shelve.open("my_app_data") as db:
# キーを指定してデータを取り出す
retrieved_users = db["users"]
retrieved_settings = db["settings"]
print(f"読み込んだユーザーリスト: {retrieved_users}")
print(f"読み込んだ設定: {retrieved_settings}")
実行結果:
読み込んだユーザーリスト: ['Taro', 'Hanako', 'Kenji']
読み込んだ設定: {'theme': 'dark', 'language': 'Japanese'}
キーと値の一覧を取得
シェルフオブジェクトは辞書と同様にkeys()
メソッドとvalues()
メソッドを持っており、ファイルに保存されているすべてのキーと値を確認することができます。
import shelve
with shelve.open("my_app_data") as db:
# 保存されているすべてのキーをリストとして表示
print(f"キーの一覧: {list(db.keys())}")
# 保存されているすべての値をリストとして表示
print(f"値の一覧: {list(db.values())}")
実行結果:
キーの一覧: ['users', 'settings']
値の一覧: [['Taro', 'Hanako', 'Kenji'], {'theme': 'dark', 'language': 'Japanese'}]
まとめ
shelve
モジュールは、Pythonのオブジェクトをファイルに永続化するためのシンプルで便利な方法を提供します。辞書と同じようなキーと値のペアでデータを扱えるため直感的に操作でき、with
文と組み合わせることで安全にファイルの開閉を管理できます。プログラムの設定や簡単なデータベースとして利用するのに適しています。