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.