Python Shelve モジュール
「シェルフ(shelf)」は永続的な辞書のようなオブジェクトです。「dbm」データベースとの違いは、シェルフ内の値(キーではなく!)は、本質的に任意の Python オブジェクトにできることです。これは pickle モジュールが処理できるものであれば何でもよく、ほとんどのクラスインスタンス、再帰的なデータ型、および多くの共有サブオブジェクトを含むオブジェクトが含まれます。キーは通常の文字列です。
変数の保存
import shelve
wife = ['Pretty', 'Lovely', 'Nice']
# シェルフファイルを開き、データを保存
with shelve.open('mydata') as shelf_file:
shelf_file['wife'] = wife
変数のオープンと読み取り
# シェルフファイルを開き、データを読み取る
with shelve.open('mydata') as shelf_file:
print(type(shelf_file))
# キーで保存された値にアクセス
print(shelf_file['wife'])
<class 'shelve.DbfilenameShelf'>
['Pretty', 'Lovely', 'Nice']
辞書と同様に、shelf 値には keys() および values() メソッドがあり、シェルフ内のキーと値のリストのような値を返します。これらのメソッドは真のリストではなくリストのような値を返すため、list() 関数に渡してリスト形式で取得する必要があります。
# シェルフ内のすべてのキーと値にアクセス
with shelve.open('mydata') as shelf_file:
print(list(shelf_file.keys()))
print(list(shelf_file.values()))
['wife']
[['Pretty', 'Lovely', 'Nice']]