Может ли optparse Python отображать значение по умолчанию для опции? - PullRequest
43 голосов
/ 10 августа 2009

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

Ответы [ 5 ]

54 голосов
/ 10 августа 2009

Попробуйте использовать %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]")
7 голосов
/ 10 августа 2012

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

for option in parser.option_list:
    if option.default != ("NO", "DEFAULT"):
        option.help += (" " if option.help else "") + "[default: %default]"
7 голосов
/ 10 августа 2009

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

0 голосов
/ 12 января 2017

Добавьте argparse.ArgumentDefaultsHelpFormatter в свой анализатор

    import argparse

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

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

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

0 голосов
/ 28 ноября 2015

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

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

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

class argparse.RawDescriptionHelpFormatter

класс argparse.RawTextHelpFormatter

класс argparse.ArgumentDefaultsHelpFormatter

класс argparse.MetavarTypeHelpFormatter

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

>>> 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

...