6.20.2.1 L'azione di memorizzazione

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.