Аргумент subparser --help вывод не показывает описание подпарсера - PullRequest
0 голосов
/ 06 сентября 2018

Если я создаю подпапку с определенной строкой помощи, эта строка не отображается, когда пользователь запускает myprog command --help:

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help="sub-command help")

parser_command = subparsers.add_parser("command", help="Issue a command")
parser.parse_args()

Справка верхнего уровня показывает эту подкоманду command с описанием «Выполнить команду» рядом с:

$ python prog.py --help
usage: prog.py [-h] {command} ...

positional arguments:
  {command}   sub-command help
    command   Issue a command

optional arguments:
  -h, --help  show this help message and exit

Однако помощь подкоманды не показывает это описание:

$ python prog.py command --help
usage: prog.py command [-h]

optional arguments:
  -h, --help  show this help message and exit

Чего я хотел бы ожидать от подкоманды, чтобы распечатать то, для чего в действительности подкоманда. То есть Я ожидал увидеть текст «Выполнить команду» где-нибудь в выводе python prog.py command --help.

Есть ли способ включить этот текст в вывод справки подкоманды? Есть ли другой атрибут subparser, который можно использовать для описания подкоманды?

1 Ответ

0 голосов
/ 06 сентября 2018

Метод add_parser принимает (большинство) параметров, которые делает конструктор ArgumentParser.

https://docs.python.org/3/library/argparse.html#sub-commands

Это предложение легко пропустить в параграфе add_subparsers:

Этот объект имеет единственный метод add_parser (), который принимает имя команды и любые аргументы конструктора ArgumentParser и возвращает объект ArgumentParser, который можно изменить, как обычно.

In [93]: parser=argparse.ArgumentParser()

In [94]: sp = parser.add_subparsers(dest='cmd',description='subparses description')

In [95]: p1 = sp.add_parser('foo',help='foo help', description='subparser description')
In [96]: p1.add_argument('--bar');

справка для основного парсера:

In [97]: parser.parse_args('-h'.split())
usage: ipython3 [-h] {foo} ...

optional arguments:
  -h, --help  show this help message and exit

subcommands:
  subparses description

  {foo}
    foo       foo help
...

справка для подпарсера:

In [98]: parser.parse_args('foo -h'.split())
usage: ipython3 foo [-h] [--bar BAR]

subparser description

optional arguments:
  -h, --help  show this help message and exit
  --bar BAR
...
...