ホームページ  >  記事  >  バックエンド開発  >  シェルフモジュールの基本的な紹介

シェルフモジュールの基本的な紹介

零下一度
零下一度オリジナル
2017-07-23 10:04:522510ブラウズ

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 に割り当てる別の方法があります。この場合、開いた後に、すべてのコンテンツはキャッシュに保存されます。閉じると、すべてのコンテンツが一度にハードディスクに書き込まれます。データ量がそれほど多くない場合は、これをお勧めします。


1. はじめに

python3 では、json または pickle を使用してデータを永続化します。複数回ダンプできますが、以前のデータは後でダンプされたデータによって上書きされるため、ロードできるのは 1 回だけです。 。ダンプとロードを複数回実装したい場合は、shelve モジュールを使用できます。 shelve モジュールは、pickle でサポートされているすべてのデータ型を永続化できます。

2. 永続データ

1. データの永続性

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。

  • shelve.txt.bakの内容

'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)
  • shelve.txt.datの内容

�]q (X   ApollqX   ZousqX   Lunaqe.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      �}q (X   ageqKX   nameqX   bigbergqu.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   �cdatetime
datetime
q C
�"
2�q�qRq.
    2の内容 、データ読み込み
  • データの取得にはgetを使用します
'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)

1. シェルブ モジュールは、ファイルを通じてメモリ データを永続化する単純なキーと値のモジュールです。

2. shelve モジュールは、pickle でサポートされている任意の Python データ形式を保持できます。

3. Shelve は pickle モジュールのパッケージです。

4. シェルブモジュールはダンプとロードを複数回行うことができます。

以上がシェルフモジュールの基本的な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。