Ответ 1
Прежде всего: заглавная эти фразы летит перед лицом соглашения, а argparse
не очень помогает вам легко изменить эти строки. Здесь у вас есть три разных класса строк: текст шаблона из форматирования справки, заголовки разделов и текст справки по конкретному варианту. Все эти строки являются локализуемыми; вы можете просто предоставить "капитализированный" перевод для всех этих строк с помощью поддержки gettext()
. Тем не менее, вы можете достичь и заменить все эти строки, если вы достаточно уверены, и немного прочитать исходный код.
Действие version
включает в себя текст по умолчанию help
, но вы можете указать свой собственный, установив аргумент help
. То же самое относится к действию help
; если вы установите параметр add_help
в False
, вы можете добавить это действие вручную:
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-v', '--version', action='version',
version='%(prog)s 1.0', help="Show program version number and exit.")
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
help='Show this help message and exit.')
Затем сообщение optional arguments
является заголовком группы; каждый анализатор имеет две группы по умолчанию, одну для позиционных аргументов, другую для необязательной. Вы можете достигнуть их атрибутами _positionals
и _optionals
, оба из которых имеют атрибут title
:
parser._positionals.title = 'Positional arguments'
parser._optionals.title = 'Optional arguments'
Будьте предупреждены, обратившись к именам, начинающимся с подчеркивания, вы отправляетесь в недокументированный частный API модуля, и ваш код может ломаться в будущих обновлениях.
Наконец, чтобы изменить строку usage
, вам придется подклассифицировать формулятор справки; передать подкласс в качестве formatter_class
аргумент:
class CapitalisedHelpFormatter(argparse.HelpFormatter):
def add_usage(self, usage, actions, groups, prefix=None):
if prefix is None:
prefix = 'Usage: '
return super(CapitalisedHelpFormatter, self).add_usage(
usage, actions, groups, prefix)
parser = argparse.ArgumentParser(formatter_class=CapitalisedHelpFormatter)
Демонстрация, соединяя все это:
>>> import argparse
>>> class CapitalisedHelpFormatter(argparse.HelpFormatter):
... def add_usage(self, usage, actions, groups, prefix=None):
... if prefix is None:
... prefix = 'Usage: '
... return super(CapitalisedHelpFormatter, self).add_usage(
... usage, actions, groups, prefix)
...
>>> parser = argparse.ArgumentParser(add_help=False, formatter_class=CapitalisedHelpFormatter)
>>> parser._positionals.title = 'Positional arguments'
>>> parser._optionals.title = 'Optional arguments'
>>> parser.add_argument('-v', '--version', action='version',
... version='%(prog)s 1.0', help="Show program version number and exit.")
_VersionAction(option_strings=['-v', '--version'], dest='version', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help="Show program version number and exit.", metavar=None)
>>> parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
... help='Show this help message and exit.')
_HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='Show this help message and exit.', metavar=None)
>>> print(parser.format_help())
Usage: [-v] [-h]
Optional arguments:
-v, --version Show program version number and exit.
-h, --help Show this help message and exit.