Argparse Python показывает значения по умолчанию для аргументов подкоманды - PullRequest
0 голосов
/ 21 января 2019

Я написал следующие разборы командной строки, используя 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, я ожидал бы, что это значение по умолчаниюаргумента - а показано.Но этого не происходит.

Здесь текущий вывод:

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

При вызове подкоманд foo без аргумента a используется значение по умолчанию.Так почему же значение по умолчанию не отображается в выходных данных об использовании?Это ошибка?

Или вы знаете, как этого добиться?

1 Ответ

0 голосов
/ 22 января 2019

Как подсказал @hpauly, я нашел обходной путь, используя (default: %(default)s).

foo = sub_parser.add_parser('foo')
foo.add_argument(
    '--a',
    action='store',
    default='1234',
    help='A. (default: %(default)s)'
)
...