2

Python プログラムの実行間で一連のキーと値のペア (文字列、整数) を保存し、その後の実行でそれらを再読み込みし、次の実行で使用できるように変更を書き込みます。

このデータを構成ファイルとは考えていませんが、ConfigParser の機能には非常に適しています。[セクション] が 2 つあれば十分です。ほんの数百ペアでとてもシンプルなので、実際にデータベースを作る必要はないと思います。

このように ConfigParser を使用するのは適切ですか? Perl と XML::Simple の使用も検討しました。そのことについて何?Python または Perl を使用せずに bash でこれを行う方法はありますか?

4

6 に答える 6

16

まあ、もっと良い選択肢があります。たとえば、pickleまたはjson形式を使用できます。Pickle シリアライズ モジュールは非常に使いやすいです。

import cPickle
cPickle.dump(obj, open('save.p', 'wb')) 
obj = cPickle.load(open('save.p', 'rb'))

フォーマットは人間が読めるものではなく、unpickle は、誤ったデータや悪意を持って作成されたデータに対して安全ではありません。信頼できないデータを unpickle しないでください。

Python 2.6 を使用している場合、jsonという組み込みモジュールがあります。ピクルスと同じくらい簡単に使用できます。

import json
encoded = json.dumps(obj)
obj = json.loads(encoded)

Json 形式は人間が判読でき、Python の辞書文字列表現に非常に似ています。また、ピクルスのようなセキュリティ上の問題はありません。

以前のバージョンの python を使用している場合は、代わりにsimplejsonを使用できます。

于 2009-05-27T16:49:26.503 に答える
8

私にとって、PyYAMLはこれらの種類のものに適しています。以前は pickle または ConfigParser を使用していました。

于 2009-05-27T16:55:39.660 に答える
2

ConfigParser はそれを行う優れた方法です。テキスト ファイルとバイナリ ファイルのどちらを使用するか、および古いバージョンの Python でコードを単純に動作させるかどうかによって、他の方法 (前述の json および cPickle モジュールが役立つ場合があります) も適切です。

考えを変えやすくするために、選択した方法の上に薄い抽象化レイヤーを配置することをお勧めします。

于 2009-05-27T17:06:22.540 に答える
0

キーごとに状態キーを更新できる場合は、任意のDBMデータベースが機能します。本当に高性能でコンパクトなストレージが必要な場合は、東京キャビネット-http://tokyocabinet.sourceforge.net/がかっこいいおもちゃです。

すべてを一度に保存してロードし(古いバージョンなどを保持するため)、データが多すぎない場合は、JSONを使用します。XMLよりも操作する方がはるかに優れています。PythonでのJSON実装がどのようになっているのかわかりませんが、PerlではJSON::XSモジュールがめちゃくちゃ高速です。

于 2009-05-28T03:45:52.743 に答える
0

bash で再実行: 文字列が有効な識別子である場合は、環境変数とenv.

于 2009-05-27T17:02:14.873 に答える