我通过使用使用子命令的argparse编写了以下命令行分析。
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
sub_parser = parser.add_subparsers(title='sub commands',
help='sub commands help')
foo = sub_parser.add_parser('foo')
foo.add_argument(
'--a',
action='store',
default='1234',
help='A'
)
parser.parse_args(['foo', '--help'])
当我打印子命令foo的用法帮助时,我希望显示参数--a的默认值。但这不会发生。
这里是当前输出:
usage: test_args.py foo [-h] [--a A]
optional arguments:
-h, --help show this help message and exit
--a A A
Process finished with exit code 0
通过调用不带参数a的子命令foo,将使用默认值。那么,为什么用法输出中也没有显示默认值?那是个错误吗?
还是您知道如何实现?
答案 0 :(得分:0)
如@hpauly所建议,我通过使用(default: %(default)s)
找到了解决方法。
foo = sub_parser.add_parser('foo')
foo.add_argument(
'--a',
action='store',
default='1234',
help='A. (default: %(default)s)'
)
答案 1 :(得分:0)
add_parser
与ArgumentParser
接受相同的参数,因此您只需执行formatter_class=argparse.ArgumentDefaultsHelpFormatter
即可为子解析器设置默认参数格式化程序。