2013-03-18 9 views
6

私はPythonでデーモンスクリプトを作成しており、プログラムが読み込む予定のファイル(.confファイルなど)に設定を指定できるようにしたいと考えています。標準ライブラリにはconfigparserとxdrlibのファイル形式がありますが、いずれもpythonではありません。前者はMicrosoft標準であり、後者はSun Microsystems標準である。コンフィギュレーションファイルを指定する最もpythonicな方法は何ですか?

私は自分で書くことができましたが、ホイールを再構築するよりも、よく知られており、文書化された標準に固執したいと思います。

答えて

2

IMHO:決して古いConfigParserモジュールに触れてはいけません(明らかに最新のものではありません)。かなりの違いがあります。コメントAPI?忘れてください! DEFAULTセクションへのアクセス?笑!解析されていないConfig-Fieldsについて知りたいですか?おそらく、ConfigParserはすべての設定ファイルを繰り返し処理し、静かに(すべてのエラーを凝縮させたException-Traceを実行しているかもしれない)光ってしまいます。どのエラーがどのファイルに属しているかを知ることは容易ではありません。ネストされた設定セクションはありません...

むしろCSV ConfigParser!

IMO:Jsonを設定ファイルに使用します。 Pythonデータ構造とJson-String表現の間の非常に柔軟な直接マッピングが可能であり、依然として人間が読むことができます。 Btw。異なる言語間の交換は非常に簡単です。

ファイル内の波カッコはそれほどではありませんが、すべてを持つことはできません! ;-)

+1

をこれは私がのConfigParserモジュールについていたのと同じ感じでした。 私はJSONの使用を検討していましたが(少なくともウェブ上で普及しているので)、それは問題でした。構成ファイルに使用されたことは一度も見たことがなく、設定仕様よりもデータ交換形式です。ありがとう! – Andy

+0

感謝の言葉は必要ありません。ちょうど正直な答えとしてそれを受け入れてください! ;) –

5

特に複雑なニーズがない限り、configparserの使用には何も問題ありません。これは、単純でフラットなファイル形式で、多くの人には分かりやすく、使い慣れています。それが本当にあなたに間違ったやりかたをされたら、いつもJSONやYAMLの設定を使うオプションがありますが、それはやや重いフォーマットです。

3番目の一般的なオプションは、設定ファイルにPythonを使用することです。これにより、柔軟性が増しますが、設定ファイルを変更するだけで奇妙なバグが導入される可能性も高くなります。

1

私はconfigparserとoptionsparserも使い始めましたが、私にとっては、最も流暢な方法は辞書を.pyファイルに定義し、それをモジュールとしてインポートすることです。それで、処理を一切必要とせずに構成に直接アクセスできます。

# 
# example.py 
# 
config = { 
    "dialect" : "sqlite", 
    "driver" : "", 
    "database" : "testdb", 
    "host"  : "localhost", 
    "port"  : "0" 
} 

あなただけやるのアクセスが必要な場所:

from example import config 

print config["database"] 
関連する問題