Подтвердить что ты не робот

Может ли Python optparse отображать значение по умолчанию для параметра?

Есть ли способ сделать Python optparse печатать значение по умолчанию для параметра или флага при показе справки с помощью -help?

4b9b3361

Ответ 1

Попробуйте использовать заполнитель %default:

# This example taken from http://docs.python.org/library/optparse.html#generating-help
parser.add_option("-m", "--mode",
                  default="intermediate",
                  help="interaction mode: novice, intermediate, "
                       "or expert [default: %default]")

Ответ 2

И если вам нужен программный доступ к значениям по умолчанию, вы можете добраться до них с помощью атрибута defaults анализатора (it a dict)

Ответ 3

И если вы хотите автоматически добавлять значения по умолчанию ко всем указанным вами опциям, вы можете сделать следующее:

for option in parser.option_list:
    if option.default != ("NO", "DEFAULT"):
        option.help += (" " if option.help else "") + "[default: %default]"

Ответ 4

Комментарии к вашему вопросу уже указывают на другой способ анализа аргументов argparse. Он был представлен в Python 3.2. Он фактически обесценивает optparse, но используется аналогично.

argpass поставляется с различными классами форматирования и, например, argparse.ArgumentDefaultsHelpFormatter также печатает значения по умолчанию, не используя вручную строку справки.

Объекты ArgumentParser позволяют настроить форматирование справки указав альтернативный класс форматирования. В настоящее время существует четыре такие классы:

класс argparse.RawDescriptionHelpFormatter

класс argparse.RawTextHelpFormatter

класс argparse.ArgumentDefaultsHelpFormatter

класс argparse.MetavarTypeHelpFormatter

Пример из документов python:

>>> parser = argparse.ArgumentParser(
...     prog='PROG',
...     formatter_class=argparse.ArgumentDefaultsHelpFormatter)
>>> parser.add_argument('--foo', type=int, default=42, help='FOO!')
>>> parser.add_argument('bar', nargs='*', default=[1, 2, 3], help='BAR!')
>>> parser.print_help()
usage: PROG [-h] [--foo FOO] [bar [bar ...]]

positional arguments:
 bar         BAR! (default: [1, 2, 3])

optional arguments:
 -h, --help  show this help message and exit
 --foo FOO   FOO! (default: 42)

см. классы форматирования argparse

Ответ 5

Добавить argparse.ArgumentDefaultsHelpFormatter в ваш парсер

    import argparse

    parser = argparse.ArgumentParser(
    description='Your application description',
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

из документации:

ArgumentDefaultsHelpFormatter автоматически добавляет информацию о значения по умолчанию для каждого из аргументов: Blockquote