1. ホーム
  2. python

[解決済み] 設定ファイル、環境、コマンドライン引数を解析し、単一のオプションのコレクションを取得します。

2022-08-03 04:13:29

質問

Pythonの標準ライブラリには、以下のようなモジュールがあります。 設定ファイルのパース ( configparser ), 環境変数の読み込み ( os.environ )、および コマンドライン引数のパース ( argparse ). 私はそれらすべてを行うプログラムを書きたいのですが、さらに。

  • を持つ。 オプション値のカスケード :

    • で上書きされる、デフォルトのオプション値。
    • で上書きされる、設定ファイルのオプション
    • によって上書きされる環境変数
    • コマンドラインオプションで上書きされます。
  • 1つまたは複数の 設定ファイルの場所をコマンドラインから指定できるようにします。 で、例えば --config-file foo.conf で指定された設定ファイルを読み込みます (通常の設定ファイルの代わりとして、あるいは追加として)。これはまだ上記のカスケードに従う必要があります。

  • 許容される オプションの定義を一箇所で行うことができます。 で、設定ファイルやコマンドラインのパース挙動を決定します。

  • パースされたオプションを統一して オプションの値の単一のコレクション に統一し、プログラムの残りの部分はそれがどこから来たのかを気にせずにアクセスできるようにします。

必要なものはすべてPythonの標準ライブラリにあるようですが、それらがスムーズに連携しているわけではありません。

どうすればPython標準ライブラリからの逸脱を最小限に抑えた形で実現できますか?

どのように解決するのですか?

標準ライブラリはこれに対応していないようで、各プログラマが自分で configparserargparse そして os.environ を全部まとめて、不便な方法で