6.20.3.2 Definire le opzioni

Ogni instanza di Option rappresenta un insieme di sinonimi per le opzioni da riga di comando, cioè opzioni che abbiano lo stesso significato e gli stessi effetti, ma differente ortografia. Potete specificare qualsiasi numero di opzioni in forma di stringa breve o estesa, ma dovete specificare almeno una stringa di opzione.

Per definire una opzione che abbia solamente una stringa di opzione in forma breve:

make_option("-f", ...)

E per definire una opzione che abbia solamente una stringa di opzione in forma estesa:

make_option("--foo", ...)

I puntini di sospensione ``...'' indicano un insieme di parole chiave che definiscono gli attributi dell'oggetto Option. Le regole che determinano quali parole chiave dovete passare per una data Option sono abbastanza complicate, ma qualche parola chiave dovrete passarla in ogni caso. Se qualcosa va storto, optparse solleva un'eccezione OptionError, mostrandovi l'errore commesso.

L'attributo più importante di un'opzione è la sua azione, ad esempio che cosa fare quando viene incontrata questa opzione sulla riga di comando. Le azioni possibili sono:

Azione  Significato 
store memorizza l'argomento dell'opzione (predefinita)
store_const memorizza il valore in una costante
store_true memorizza un valore vero
store_false memorizza un valore falso
append accoda l'argomento dell'opzione ad una lista
count incrementa un contatore di uno
callback chiama una funzione specificata
help stampa un messaggio che spiega l'utilizzo, e che include tutte le opzioni e la rispettiva documentazione

(Se non specificate un'azione, quella predefinita è ``store''. Per questa azione, potete anche fornire le parole chiave type e dest; vedete più avanti.)

Come potete vedere la maggior parte delle azioni comporta la memorizzazione o l'aggiornamento di un valore da qualche parte. optparse crea sempre un oggetto particolare (un'istanza della classe Values) prorio per questo scopo. Gli argomenti di Option (e alcuni altri valori) vengono memorizzati come attributi di questo oggetto, a seconda dell'argomento dest passato a make_option()/add_option().

Per esempio, quando chiamate:

parser.parse_args()

una delle prime cose che fa optparse consiste nel creare un oggetto values:

values = Values()

Se una delle opzioni di questo parser viene definita con:

make_option("-f", "--file", action="store", type="string", dest="filename")

e la riga di comando da analizzare include una qualsiasi tra le seguenti:

-ffoo
-f foo
--file=foo
--file foo

allora optparse, vedendo l'opzione -f o --file, farà l'equivalente di questo:

  values.filename = "foo"

Chiaramente, gli argomenti type e dest sono importanti quasi quanto l'azione action. Tuttavia, action è il solo attributo significativo per tutte le opzioni, per questo è il più importante.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.