ホームページ >バックエンド開発 >Python チュートリアル >シェルフモジュールの基本的な紹介
shelve
shelve は、open() という 1 つの関数だけを持ち、ファイル名であるシェルフ オブジェクトを返します。それを使用します。 保存するには、単純に辞書として扱うことができます。保存が完了したら、close 関数を呼び出して閉じます。これには、次のような潜在的な小さな問題があります:[python] view plain copy >>> import shelve >>> s = shelve.open('test.dat') >>> s['x'] = ['a', 'b', 'c'] >>> s['x'].append('d') >>> s['x'] ['a', 'b', 'c']保存された d はどこに行くのでしょうか?毛織物?実際、これは非常に単純です。d は ['a', 'b', 'c'] を x に保存します。s['x'] は次のようになります。単なるコピーであり、コピーを書き戻していないため、 s['x'] を再度読み取ると、ソースからコピーが読み取られるため、新しく変更されたコンテンツはコピーに表示されません。 1 つ目は、以下に示すように、キャッシュされた変数を使用する方法です
[python] view plain copy >>> temp = s['x'] >>> temp.append('d') >>> s['x'] = temp >>> s['x'] ['a', 'b', 'c', 'd']Python2.4 には、open メソッドの writeback パラメータの値を True に割り当てる別の方法があります。この場合、開いた後に、すべてのコンテンツはキャッシュに保存されます。閉じると、すべてのコンテンツが一度にハードディスクに書き込まれます。データ量がそれほど多くない場合は、これをお勧めします。
python3 では、json または pickle を使用してデータを永続化します。複数回ダンプできますが、以前のデータは後でダンプされたデータによって上書きされるため、ロードできるのは 1 回だけです。 。ダンプとロードを複数回実装したい場合は、shelve モジュールを使用できます。 shelve モジュールは、pickle でサポートされているすべてのデータ型を永続化できます。
import shelve import datetime info = {'name': 'bigberg', 'age': 22} name = ['Apoll', 'Zous', 'Luna'] t = datetime.datetime.now() with shelve.open('shelve.txt') as f: f['name'] = name # 持久化列表 f['info'] = info # 持久化字典 f['time'] = t # 持久化时间类型コードを実行すると、shelve.txt.bak、shelve.txt.dat、shelve.txt の 3 つのファイルが生成されます。 .dir。
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
�]q (X ApollqX ZousqX Lunaqe. �}q (X ageqKX nameqX bigbergqu. �cdatetime datetime q C �" 2�q�qRq.
データの取得にはgetを使用します
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
2. shelve モジュールは、pickle でサポートされている任意の Python データ形式を保持できます。
3. Shelve は pickle モジュールのパッケージです。
4. シェルブモジュールはダンプとロードを複数回行うことができます。
以上がシェルフモジュールの基本的な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。