Po pierwsze: kapitulacja tych zwrotów leci wbrew konwencjom, a argparse
nie jest tak naprawdę narzędziem ułatwiającym zmianę tych łańcuchów. Masz tu trzy różne klasy ciągów znaków: tekst w zestawie z programu do formatowania pomocy, tytuły sekcji i tekst pomocy dla poszczególnych opcji. Wszystkie te struny są lokalnie dostępne; ty może po prostu dostarczyć tłumaczenie "pisane wielką literą" dla wszystkich tych ciągów przez gettext()
module support. Powiedziawszy, możesz osiągnąć i zastąpić wszystkie te ciągi, jeśli jesteś wystarczająco zdeterminowany i read the source code a little.
Czynność version
zawiera domyślny tekst help
, ale można podać własny, ustawiając argument help
. To samo dotyczy akcji help
; jeśli ustawisz add_help
argument do False
można dodać, że działania ręcznie:
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-v', '--version', action='version',
version='%(prog)s 1.0', help="Show program's version number and exit.")
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
help='Show this help message and exit.')
Dalej komunikat optional arguments
to tytuł grupa; każdy parser ma dwie domyślne grupy, jedną dla argumentów pozycyjnych, drugą dla opcji opcjonalnej. Można dotrzeć do nich przez atrybuty _positionals
i _optionals
, z których oba mają title
atrybut:
parser._positionals.title = 'Positional arguments'
parser._optionals.title = 'Optional arguments'
ostrzegamy, poprzez dostęp nazwach zaczynających się od znaku podkreślenia jesteś wyruszą w nieudokumentowane prywatnej API modułu, a twój kod może się zepsuć w przyszłych aktualizacjach.
Na koniec, aby zmienić ciąg znaków usage
, należy utworzyć podklasę formantu pomocy; zdać podklasę się jako formatter_class
argument:
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)
Demo, stawiając je wszystkie razem:
>>> 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's version number and exit.")
_VersionAction(option_strings=['-v', '--version'], dest='version', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help="Show program's 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's version number and exit.
-h, --help Show this help message and exit.
Czy próbowano ustawienie [ 'help'] (https://docs.python.org/3/library/argparse.html# Wsparcie)? – jonrsharpe
Och, widzę - wtedy możesz ustawić 'add_help' na' False' i zrobić to ręcznie. Ale małe litery to konwencja dla tych rzeczy. – jonrsharpe