2009-08-10 6 views
41

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?

+0

Vedere questo SO: http://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help –

+0

Se qualcuno cerca lo stesso per Argparse: [Argparse: modo di includere valori predefiniti in "--help"?] (http://stackoverflow.com/a/12151325/562769) –

risposta

54

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]") 
7

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)

7

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]" 
0

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

0

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

Problemi correlati