Аргумент Argparse сгенерировал справку, 'metavar' с вариантами выбора

При использовании аргумента (необязательный и позиционный оба имеют эту проблему) с ключевым словом choices сгенерированный вывод справки показывает эти варианты.

Если тот же самый аргумент также включает ключевое слово metavar, список вариантов будет исключен из сгенерированного вывода.

Что я имел в виду, так это показать metavar в строке usage, но на самом деле показать доступные варианты, когда в «автопомощи» перечислены позиционные/необязательные детали аргумента.

Любые простые исправления/обходные пути?


Я уже запустил оболочку argparse для пользовательской функциональности справки. Возможно, это должно быть еще одной функцией в моем списке TODO.


person user2097818    schedule 02.12.2013    source источник
comment
Да, создание подкласса HelpFormatter — это «одобренный» способ изменения формата справки. Предоставленные примеры делают простые вещи, такие как изменение способа переноса текста. Не копаясь в коде, я не могу сказать, будет ли ваше изменение тривиальным или сложным.   -  person hpaulj    schedule 02.12.2013


Ответы (1)


Вы можете добавить варианты в текст справки.

parser=argparse.ArgumentParser()
parser.add_argument('-f',metavar="TEST",choices=('a','b','c'),
    help='choices, {%(choices)s}')
print parser.format_help()

производит:

usage: stack20328931.py [-h] [-f TEST]

optional arguments:
  -h, --help  show this help message and exit
  -f TEST     choices, {a, b, c}
person hpaulj    schedule 02.12.2013
comment
Это определенно подходит для простого исправления. Спасибо большое. - person user2097818; 02.12.2013