L'ultima funzionalit� che utilizzerete in ogni script sar� quella che permette a optparse di generare messaggi di help. Tutto quello che dovrete fare sar� fornire un argomento help quando aggiungerete un'opzione. Creiamo un nuovo analizzatore, e popoliamolo includendovi delle opzioni (documentate) semplificative:
usage = "utilizzo: %prog [opzioni] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-v", "--verbose",
action="store_true", dest="verbose", default=True,
help="fa un sacco di rumore [predefinito]")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose",
help="� mooolto silenzioso (sono a caccia di conigli)")
parser.add_option("-f", "--file", dest="filename",
metavar="FILE", help="scrive l'output su FILE"),
parser.add_option("-m", "--mode",
default="intermediate",
help="modalit� interattiva: specificare tra 'principiante', "
"'intermedio' [predefinito], 'esperto'")
Se optparse incontra -h o --help sulla riga di comando, oppure se invocate parser.print_help(), stamper� sullo stdout quanto segue:
utilizzo: <vostroscript> [opzioni] arg1 arg2
opzioni:
-h, --help mostra questo messaggio ed esce
-v, --verbose fa un sacco di rumore [predefinito]
-q, --quiet � mooolto silenzioso (sono a caccia di conigli)
-fFILE, --file=FILE scrive l'output su FILE
-mMODE, --mode=MODE modalit� interattiva: specificare tra 'principiante',
'intermedio' [predefinito], 'esperto'
Ci sono molti argomenti per aiutare optparse a genereare il miglior messaggio d'aiuto possibile:
usage = "utilizzo: %prog [opzioni] arg1 arg2"
optparse espande "%prog" nella stringa di utilizzo fino
al nome dello script corrente, cio� os.path.basename(sys.argv[0]).
La stringa espansa viene quindi stampata prima della descrizione
dettagliata delle opzioni di aiuto.
Se non fornite una stringa di utilizzo, optparse ne user� una
predefinita, minimale ma comprensibile: "usage: %prog [options]",
che � perfetta se il vostro script non richiede nessun argomento
posizionale.
-mMODE, --mode=MODE
In questo caso ``MODE'' viene chiamata meta variabile: cio� resta in
attesa dell'argomento fornito dall'utente a
-m/--mode. optparse, come
comportamento predefinito, converte il nome della variabile di
destinazione in lettere maiuscole, e lo utilizza per indicare la
meta variabile. Qualche volta, questo non � ci� che desiderate--per
esempio, l'opzione che specifica il nome di un file, filename,
crea esplicitamente metavar="FILE", con la seguente descrizione
dell'opzione generata automaticamente:
-fFILE, --file=FILE
Questo, tuttavia, � importante anche per ragioni che vanno oltre il mero risparmio di spazio: il testo di aiuto scritto manualmente usa la meta variabile ``FILE'' per suggerire all'utente che esiste una correlazione tra la sintassi formale ``-fFILE'' e la descrizione semantica informale ``scrive l'output su FILE''. Questa � una maniera semplice ma efficace per rendere il vostro testo di aiuto assai pi� chiaro e fruibile per gli utilizzatori finali.
Quando si ha a che fare con molte opzioni, conviene raggrupparle per avere un migliore output di aiuto. Una classe OptionParser pu� contenere diversi gruppi di opzioni, ognuno dei quali pu� contenere diverse opzioni.
Continuando col parser definito sopra, � semplice aggiungere un OptionGroup:
group = OptionGroup(parser, "Opzioni Pericolose", "Attenzione:
utilizza queste opzioni a tuo rischio e pericolo. "
"Alcune di queste sono note per creare dei danni.")
group.add_option("-g", action="store_true", help="Opzione di un gruppo.")
parser.add_option_group(group)
Il risultato dovrebbe essere l'output di aiuto seguente:
utilizzo: <vostroscript> [opzioni] arg1 arg2
opzioni:
-h, --help mostra questo messaggio ed esce
-v, --verbose fa un sacco di rumore [predefinito]
-q, --quiet � mooolto silenzioso (sono a caccia di conigli)
-fFILE, --file=FILE scrive l'output su FILE
-mMODE, --mode=MODE modalit� interattiva: specificare tra 'principiante',
'intermedio' [predefinito], 'esperto'
Opzioni pericolose:
Attenzione: utilizza quest opzioni a tuo rischio e
pericolo. Alcune di queste sono note per creare dei danni.
-g Opzione di un gruppo.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.