Prima di tutto: la capitalizzazione di tali frasi è conforme alle convenzioni e lo standard argparse
non è veramente utile per aiutarti a modificare facilmente queste stringhe. Qui ci sono tre diverse classi di stringhe: testo standardizzato dal formattatore della guida, titoli delle sezioni e testo di aiuto per ogni opzione specifica. Tutte queste stringhe sono localizzabili; è possibile fornire una traduzione "in maiuscolo" per tutte queste stringhe tramite lo gettext()
module support. Detto questo, puoi raggiungere e sostituire tutte queste stringhe se sei sufficientemente determinato e read the source code a little.
L'azione version
include un testo predefinito help
, ma è possibile fornire il proprio impostando l'argomento help
. Lo stesso vale per l'azione help
; se si imposta la add_help
argument per False
è possibile aggiungere che l'azione manualmente:
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.')
Avanti, il messaggio optional arguments
è un titolo gruppo; ogni parser ha due gruppi predefiniti, uno per gli argomenti posizionali, l'altro per facoltativo. È possibile raggiungere questi dagli attributi _positionals
e _optionals
, entrambi i quali hanno un attributo title
:
parser._positionals.title = 'Positional arguments'
parser._optionals.title = 'Optional arguments'
Essere avvertito, accedendo nomi che iniziano con un carattere di sottolineatura si sta avventurando nel non documentata API private del modulo, e il tuo codice potrebbe rompersi nei futuri aggiornamenti.
Infine, per modificare la stringa usage
, è necessario creare una sottoclasse del programma di formattazione della guida; passare il sottoclasse come il 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, mettendo questi tutti insieme:
>>> 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.
Hai provato l'impostazione [ 'help'] (https://docs.python.org/3/library/argparse.html# Aiuto)? – jonrsharpe
Oh, capisco - quindi potresti impostare 'add_help' su' False' e farlo manualmente. Ma la minuscola è la convenzione per queste cose. – jonrsharpe