2010-10-27 19 views
178

Io uso python per creare l'impostazione delle impostazioni del mio progetto, ma ho bisogno di aiuto per ottenere gli argomenti della riga di comando.Come accedere agli argomenti della riga di comando in Python?

Ho provato questo sul terminale:

$python myfile.py var1 var2 var3 

Nel mio file Python, voglio utilizzare tutte le variabili che vengono immessi.

+0

Il modulo Baker è un ottimo strumento per scrivere app in linea di comando Python. http://pypi.python.org/pypi/Baker/1.02 –

risposta

235

Python tutorial explains it:

import sys 

print(sys.argv) 

Più in particolare, se si esegue python example.py one two three:

>>> import sys 
>>> print(sys.argv) 
['example.py', 'one', 'two', 'three'] 
+4

Serbatoi, ma ora ho bisogno di prendere la mia var1 in uso? cosa succede qui .. :) – ParisNakitaKejser

+34

Dooh, capito (sys.argv [1]): D – ParisNakitaKejser

68
import sys 

sys.argv[1:] 

vi darà un elenco di argomenti (non incluso il nome del file python)

16

È possibile utilizzare sys.argv per ottenere gli argomenti come elenco.

Se avete bisogno di accedere singoli elementi, è possibile utilizzare

sys.argv[i] 

dove i è indice, 0 vi darà il nome del file in esecuzione pitone. Qualsiasi indice dopo quello sono gli argomenti passati. Codice

21

Python:

import sys 

# main 
param_1= sys.argv[1] 
param_2= sys.argv[2] 
param_3= sys.argv[3] 
print 'Params=', param_1, param_2, param_3 

Invocazione:

$python myfile.py var1 var2 var3 

uscita:

Params= var1 var2 var3 
3

Se si chiama in questo modo: $ python myfile.py var1 var2 var3

import sys 

var1 = sys.argv[1] 
var2 = sys.argv[2] 
var3 = sys.argv[3] 

Simile agli array si ha anche sys.argv[0] che è sempre la directory di lavoro corrente.

1

Alcune cose aggiuntive che posso pensare.

Come @allsyed ha affermato che sys.argv fornisce un elenco di componenti (incluso il nome del programma), quindi se si desidera conoscere il numero di elementi passati tramite la riga di comando è possibile utilizzare len() per determinarlo. Sulla base di ciò, è possibile progettare messaggi di eccezione/errore se l'utente non ha passato un numero specifico di parametri.

anche se alla ricerca di un modo migliore per gestire gli argomenti della riga di comando, vorrei suggerire si guarda https://docs.python.org/2/howto/argparse.html

19

mi raccomando argparse che è arrivato con Python 2.7 e successivi.

Ecco un piccolo esempio:

import argparse 
parser = argparse.ArgumentParser("simple_example") 
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int) 
args = parser.parse_args() 
print(args.counter + 1) 

e l'uscita per python3 prog.py -h

usage: simple_example [-h] counter 

positional arguments: 
    counter  counter will be increased by 1 and printed. 

optional arguments: 
    -h, --help show this help message and exit 

e per python3 prog.py 1 come ci si aspetterebbe:

2 
Problemi correlati