C'è un modo per rendere la stampa optparse di Python il valore predefinito di un'opzione o un flag quando si mostra l'aiuto con --help?L'optparse di Python può visualizzare il valore predefinito di un'opzione?
risposta
Provare a utilizzare il segnaposto %default
stringa:
# 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]")
E se è necessario l'accesso programmatico ai valori di default, è possibile ottenere a loro tramite l'attributo defaults
del parser (si tratta di un dict)
E se si desidera aggiungere automaticamente i valori predefiniti a tutte le opzioni specificate, è possibile effettuare le seguenti operazioni:
for option in parser.option_list:
if option.default != ("NO", "DEFAULT"):
option.help += (" " if option.help else "") + "[default: %default]"
Il co i messaggi alla tua domanda indicano già che esiste un altro modo per analizzare gli argomenti chiamati argparse. È stato introdotto in Python 3.2. In realtà depreca optparse
ma viene utilizzato in modo simile.
argpass
viene fornito con diverse classi di formattazione e ad esempio argparse.ArgumentDefaultsHelpFormatter
stamperà anche i valori predefiniti senza dover manipolare manualmente la stringa di aiuto.
Gli oggetti ArgumentParser consentono di personalizzare la formattazione della guida tramite specificando una classe di formattazione alternativa. Attualmente, esistono quattro tali classi:
classe argparse.RawDescriptionHelpFormatter
classe argparse.RawTextHelpFormatter
classe argparse.ArgumentDefaultsHelpFormatter
classe argparse.MetavarTypeHelpFormatter
Un esempio dal i documenti 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)
vedere argparse formatting classes
Aggiungi argparse.ArgumentDefaultsHelpFormatter al parser
import argparse
parser = argparse.ArgumentParser(
description='Your application description',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
dalla documentazione:
ArgumentDefaultsHelpFormatter aggiunge automaticamente informazioni sui valori di default per ciascun messaggio argomento di aiuto: Blockquote
Vedere questo SO: http://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help –
Se qualcuno cerca lo stesso per Argparse: [Argparse: modo di includere valori predefiniti in "--help"?] (http://stackoverflow.com/a/12151325/562769) –