6.20.1.1 Terminologia

Innanzitutto dobbiamo stabilire un po' di terminologia.

argument
una porzione di testo che l'utente digita sulla riga di comando, e che la shell passa a execl() o execv(). In Python, gli argomenti sono elementi di sys.argv[1:]. (sys.argv[0] è il nome che sta per essere eseguito; nell'ambito dell'analisi degli argomenti ciò non è molto importante. Anche le shell Unix utilizzano il termine ``word'' (NdT: parola).

Sarebbe auspicabile occasionalmente, utilizzare una lista argomenti differente da sys.argv[1:], in modo che possiate leggere ``argomento'' come ``un elemento di sys.argv[1:] oppure di qualche altra lista fornita in sostituzione di sys.argv[1:]''.

option
un argomento utilizzato per fornire informazioni supplementari al fine di guidare o personalizzare l'esecuzione di un programma. Esistono svariate differenze di sintassi per le opzioni; la sintassi tradizionale di Unix è un trattino (-) seguito da una lettera singola, per esempio -x o -F. Inoltre la sintassi tradizionale di Unix consente che le opzioni multiple vengano riunite in un singolo argomento, per esempio -x -F è equivalente a -xF. Il progetto GNU ha introdotto il doppio trattino (--) seguito da una serie di parole separate da un trattino, per esempio --file o --dry-run. Queste sono le sole due opzioni sintattiche concesse da optparse.

Alcune altre opzioni di sintassi utilizzate dalla comunità informatica:

optparse non supporta queste opzioni sintattiche, né lo farà in futuro. (Se volete veramente utilizzare una di queste opzioni di sintassi, dovrete creare una classe derivata di OptionParser e ridefinire tutti i singoli pezzi. Ma per favore non lo fate! optparse opera deliberatamente nel modo tradizionale proprio di Unix/GNU; le prime tre opzioni non sono standard su nessun sistema, e l'ultima ha senso esclusivamente se state programmando per piattaforme MS-DOS/Windows e/o VMS.)

option argument
un argomento che segue un'opzione, è strettamente collegato ad essa, e viene rimosso dalla lista degli argomenti contemporaneamente all'opzione stessa. Spesso, gli argomenti di un'opzione possono anche far parte dello stesso argomento costituente l'opzione, ad esempio:

    ["-f", "foo"]

sarebbe equivalente a:

    ["-ffoo"]

(optparse supporta questa sintassi.)

Alcune opzioni non prendono mai un argomento. Altre invece richiedono sempre un argomento. Molti utenti desiderano avere la possibilità di passare ``argomenti facoltativi ad un'opzione'', nel senso che alcune opzioni prenderanno un argomento nel caso lo rilevino sulla riga di comando, altrimenti non ne prenderanno alcuno. Questo comportamento è in qualche modo controverso, perché rende ambigua l'analisi: se -a e -b sono entrambe opzioni, e -a prende un argomento facoltativo, come deve venire interpretato -ab? Il modulo optparse non supporta l'uso degli argomenti facoltativi di un'opzione.

argomento posizionale
qualche volta presente come residuo della lista degli argomenti, dopo che le opzioni sono state analizzate; ovvero, dopo che le opzioni ed i loro argomenti siano stati analizzati e rimossi dalla lista degli argomenti.

opzione richiesta
un'opzione che deve essere fornita sulla riga di comando. La frase ``opzione richiesta'' è un ossimoro; la presenza di ``opzioni richieste'' in un programma è di solito indice di una qualche carenza nel progetto dell'interfaccia utente. optparse non vi impedisce di implementare questo tipo di opzioni, tuttavia non vi fornisce neppure molto aiuto per farlo. Vedete ``Esempi estesi'' (sezione 6.20.5) per due modi di implementare le opzioni di questo tipo con optparse.

Per esempio, considerate questa ipotetica riga di comando:

  prog -v --report /tmp/report.txt foo bar

-v e --report sono entrambe opzioni. Supponendo che l'opzione --report richieda un argomento, /tmp/report.txt è un argomento dell'opzione. foo e bar sono invece argomenti posizionali.

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