Python的argparse显示子命令参数的默认值

时间:2019-01-21 14:53:13

标签: python argparse

我通过使用使用子命令的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,将使用默认值。那么,为什么用法输出中也没有显示默认值?那是个错误吗?

还是您知道如何实现?

2 个答案:

答案 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_parserArgumentParser接受相同的参数,因此您只需执行formatter_class=argparse.ArgumentDefaultsHelpFormatter即可为子解析器设置默认参数格式化程序。