1

私は別のプログラムのプラグインを作成しているので、可能な限り軽量化しようとしています。

私がする必要があるのは、ConfigParserの構成ファイルのセクションの名前を更新できるようにすることです。

[project name]
author:john doe
email: spam@example.com
year: 2010

次に、ユーザーがプロジェクトの名前、作成者、電子メール、および年を編集できるテキストフィールドがあります。

[プロジェクト名]を変更することはできないと思うので、2つの解決策を考えました。

1-設定ファイルを次のようにします。

[0]
projectname: foobar
author:john doe
email: spam@example.com
year: 2010

そうすれば、別のオプションと同じようにプロジェクトの名前を変更できます。しかし、問題は、セクション番号を自動インクリメントする必要があることです([0]、[1]など)。そして、これを行うには、すべてのセクションを取得し、並べ替えて、次の番号がどうあるべきかを理解する必要があります。

もう1つのオプションは、セクション全体とその値を削除し、更新された値で再度追加することです。これには、古いセクション名を保持する変数を関数に渡すなど、もう少し作業が必要になりますが、速くてもかまいません。

2つのうちどちらが最適ですか?または別の方法はありますか?私は可能な限り最速/軽量のソリューションを採用したいと思っています。それがより多くの作業を必要とするかどうかは関係ありません。

4

1 に答える 1

2

ini ファイルは、適切に定義された入力などを使用して、アプリケーションを構成するのにおそらく最適です。より一般的なシリアル化ツールが必要なようです。JSONはおそらくこれに適しています。おそらく、それらのフィールドを持つ dict のリストの JSON 表現 (したがって増分インデックス) を保存したいですか?

jsonstdlib でのモジュールの使用法は非常に簡単です。たとえば、いくつかのレコードを保存するには

import json

projects = []
projects.append({'project_name': 'foobar', 
                 'author': 'John Doe', 
                 'email': 'spam@example.com', 
                 'year': '2010'})
projects.append({'project_name': 'baz', 
                 'author': 'Cat Stevens', 
                 'email': 'cs@example.com', 
                 'year': '2009'})

with open('projects.json', 'w') as f:
    json.dump(projects, f)

同様に、読み取りモードでjson.load(f)開いたファイルからシリアル化されたデータを復元します。f

于 2010-03-23T05:27:40.517 に答える