Argparse: '--help' にデフォルト値を含める方法は? 質問する

Argparse: '--help' にデフォルト値を含める方法は? 質問する

次のような argparse スニペットがあるとします。

diags.cmdln_parser.add_argument( '--scan-time',
                     action  = 'store',
                     nargs   = '?',
                     type    = int,
                     default = 5,
                     help    = "Wait SCAN-TIME seconds between status checks.")

現在、--help返されるもの:

usage: connection_check.py [-h]
                             [--version] [--scan-time [SCAN_TIME]]

          Test the reliability/uptime of a connection.



optional arguments:
-h, --help            show this help message and exit
--version             show program's version number and exit
--scan-time [SCAN_TIME]
                    Wait SCAN-TIME seconds between status checks.

私は次のようなものを好みます:

--scan-time [SCAN_TIME]
                    Wait SCAN-TIME seconds between status checks.
                    (Default = 5)

ヘルプ フォーマッタ コードを覗いてみると、オプションが限られていることがわかりました。同様の方法argparseでデフォルト値を印刷する賢い方法はありますか。それとも、フォーマッタをサブクラス化すればよいのでしょうか。--scan-timehelp

ベストアンサー1

使用argparse.ArgumentDefaultsHelpFormatterフォーマッタ:

parser = argparse.ArgumentParser(
    # ... other options ...
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

引用するとドキュメンテーション:

使用可能な他のフォーマッタ クラスはArgumentDefaultsHelpFormatter、各引数のデフォルト値に関する情報を追加します。

これはヘルプ テキストが定義されている引数にのみ適用されることに注意してください。引数に値がない場合、デフォルト値に関するhelp情報を追加するヘル​​プ メッセージはありません。

スキャン時間オプションの正確な出力は次のようになります。

  --scan-time [SCAN_TIME]
                        Wait SCAN-TIME seconds between status checks.
                        (default: 5)

おすすめ記事