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

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

Ответ 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