Pythonのshelveモジュールで変数をファイルに保存する方法

この記事では、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文と組み合わせることで安全にファイルの開閉を管理できます。プログラムの設定や簡単なデータベースとして利用するのに適しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次