L'azione istruisce optparse su cosa fare quando riceve una stringa di opzione per questa opzione, da riga di comando. Per esempio, l'azione di memorizzazione significa: prendi il prossimo argomento (o ciò che rimane dell'argomento corrente), assicurati che sia del tipo giusto, e memorizzalo nella destinazione prescelta.
Per esempio, inserite nel ``...'' dell'ultima opzione:
parser.add_option("-f", "--file", action="store", type="string", dest="filename")
Adesso si crei una finta riga di comando e si chieda a optparse di analizzarla:
args = ["-f", "foo.txt"] options, args = parser.parse_args(args)
(Notate che se non viene passata una lista di argomenti a
parse_args(), automaticamente la funzione utilizzerà
sys.argv[1:]
.)
Quando optparse trova -f, elabora l'argomento
seguente--foo.txt
--e lo memorizza nell'attributo
filename di uno speciale oggetto. Questo oggetto è il primo
valore restituito da parse_args(), così:
print options.filename
stamperà foo.txt
.
Altri tipi di opzioni forniti da optparse sono int
e
float
. Ecco un'opzione che si aspetta un argomento di tipo
intero:
parser.add_option("-n", type="int", dest="num")
Questo esempio non fornisce un tipo di opzione lunga, che è perfettamente accettabile. Così come non specifica l'azione--che viene impostata a ``store'' (NdT: memorizza) come valore predefinito.
Adesso facciamo l'analisi di un'altra riga di comando finta. Questa volta comprimeremo l'argomento dell'opzione e l'opzione stessa, per cui -n42 (un argomento) è equivalente a -n 42 (due argomenti).
options, args = parser.parse_args(["-n42"]) print options.num
Verrà stampato 42
.
La prova con un argomento di tipo ``float'' viene lasciata per esercizio al lettore.
Se non specificate un tipo, optparse presuppone il tipo ``string''. In combinazione col fatto che l'azione predefinita è ``store'', ciò significa che il nostro primo esempio può essere scritto in forma molto più breve:
parser.add_option("-f", "--file", dest="filename")
Se non prevedete una destinazione, optparse calcola un ragionevole valore predefinito dalla stringa delle opzioni: se la prima stringa dell'opzione lunga è --foo-bar, allora la destinazione predefinita sarà foo_bar. Se non ci sono stringhe di opzioni lunghe, optparse cerca nella prima opzione corta: la destinazione predefinita per -f è f.
Aggiungere ulteriori tipi è abbastanza semplice; vedete la sezione 6.20.5, ``Aggiungere nuovi tipi''.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.