La argparse
documentazione è abbastanza buona, ma tralascia alcuni dettagli utili che potrebbero non essere ovvi. (@Diego Navarro ne ha già parlato in parte ma cercherò di espandere leggermente la sua risposta.) L'utilizzo di base è il seguente:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
L'oggetto da cui si ottiene parse_args()
è un oggetto "Spazio dei nomi": un oggetto le cui variabili membro prendono il nome dagli argomenti della riga di comando. L' Namespace
oggetto è il modo in cui accedi ai tuoi argomenti e ai valori ad essi associati:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(Nota che argparse
sostituisce '-' nei nomi degli argomenti con caratteri di sottolineatura quando si nominano le variabili.)
In molte situazioni potresti voler usare argomenti semplicemente come flag che non hanno valore. Puoi aggiungerli in argparse in questo modo:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
Quanto sopra creerà le variabili denominate 'pippo' con valore Vero e 'no_foo' con valore Falso, rispettivamente:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
Si noti inoltre che è possibile utilizzare l'opzione "obbligatorio" quando si aggiunge un argomento:
parser.add_argument('-o', '--output', required=True)
In questo modo se ometti questo argomento dalla riga di comando argparse
ti dirà che è mancante e interrompi l'esecuzione del tuo script.
Infine, nota che è possibile creare una struttura dettata dei tuoi argomenti usando la vars
funzione, se ciò ti semplifica la vita.
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
Come puoi vedere, vars
restituisce un dict con i nomi degli argomenti come chiavi e i loro valori come, er, valori.
Ci sono molte altre opzioni e cose che puoi fare, ma questo dovrebbe coprire gli scenari di utilizzo più essenziali e comuni.
sys.argv
l'argomento che desideri ...