次のような 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-time
help
ベストアンサー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)