6

Python でデーモン スクリプトを作成していますが、プログラムが読み取るファイル (.conf ファイルなど) で設定を指定できるようにしたいと考えています。標準ライブラリには configparser と xdrlib のファイル形式がありますが、どちらも Pythonic のようには見えません。前者は Microsoft の標準で、後者は Sun Microsystems の標準です。

自分で作成することもできますが、車輪を再発明するよりも、よく知られて文書化された標準に固執したいと思います。

4

3 に答える 3

5

特に複雑なニーズがない限り、configparser を使用しても問題はありません。これは、簡単に理解でき、多くの人に親しまれているシンプルでフラットなファイル形式です。それが本当に間違っている場合は、JSON または YAML 構成を使用するオプションが常にありますが、それらはやや重い形式です。

3 番目の一般的なオプションは、構成ファイルに Python を使用することです。これにより、柔軟性が向上しますが、構成ファイルを「変更するだけ」で奇妙なバグが発生する可能性も高くなります。

于 2013-03-18T20:17:58.990 に答える
2

私見:ConfigParserモジュールには絶対に触れないでください。その古い(読み取り:明らかに最新ではありません)、かなりの癖があります。コメント用のAPI?忘れてください!DEFAULT-Sectionへのアクセス?笑!解析されていないConfig-Fieldsについて疑問に思っていますか?何を推測してください:ConfigParserは、すべての構成ファイルを繰り返し処理し、サイレントに失敗して(グロスオーバー)、最終的には凝縮された例外を実行します-すべてのエラーを追跡します。どのエラーがどのファイルに属しているかを見つけるのは簡単ではありません。ネストされたconfig-sectionsはありません。

むしろCSV、次にConfigParser!

IMO:構成ファイルにはJsonを使用します。python-data構造とJson-String表現の間の非常に柔軟で直接的なマッピングが可能であり、それでも人間が読める形式です。ところで。異なる言語間の交換は非常に簡単です。

中かっこ-ファイル内の中かっこはそれほどきれいではありませんが、すべてを使用することはできません。;-)

于 2013-03-18T20:20:46.597 に答える
1

私も configparser と optionsparser から始めましたが、私にとって最も流暢な方法は、.py ファイルで辞書を定義し、それをモジュールとしてインポートすることです。その後、それ以上の処理を行うことなく、構成に直接アクセスできます。

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

アクセスが必要な場所ならどこでも:

from example import config

print config["database"]
于 2013-03-18T23:14:39.680 に答える