Есть ли способ сделать Python optparse печатать значение по умолчанию для параметра или флага при показе справки с помощью -help?
Может ли Python optparse отображать значение по умолчанию для параметра?
Ответ 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)
Ответ 5
Добавить argparse.ArgumentDefaultsHelpFormatter в ваш парсер
import argparse
parser = argparse.ArgumentParser(
description='Your application description',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
из документации:
ArgumentDefaultsHelpFormatter автоматически добавляет информацию о значения по умолчанию для каждого из аргументов: Blockquote