2010-10-27 10 views
178

Ich benutze Python, um meine Projekteinstellungen einzurichten, aber ich brauche Hilfe beim Abrufen der Befehlszeilenargumente.Wie kann ich auf Befehlszeilenargumente in Python zugreifen?

Ich habe versucht, dies auf dem Terminal:

$python myfile.py var1 var2 var3 

In meiner Python-Datei, ich will alle Variablen verwenden, die eingegeben werden.

+0

Der Bäcker-Modul ist ein großes Werkzeug für die Schreiben von Python-Befehlszeilen-Apps. http://pypi.python.org/pypi/Baker/1.02 –

Antwort

235

Python tutorial explains it:

import sys 

print(sys.argv) 

Genauer gesagt, wenn Sie laufen python example.py one two three:

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

Tanks, aber jetzt muss ich meine var1 in Betrieb nehmen? was passiert hier .. :) – ParisNakitaKejser

+34

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

68
import sys 

sys.argv[1:] 

wird Ihnen eine Liste von Argumenten (ohne den Namen der Python-Datei)

16

Sie können sys.argv verwenden, um die Argumente als a zu erhalten Liste.

Wenn Sie einzelne Elemente zugreifen müssen, können Sie

sys.argv[i] 

verwenden, wo i Index ist, 0 geben Ihnen die Python Dateinamen ausgeführt werden. Alle nachfolgenden Indizes sind die übergebenen Argumente.

21

Python-Code:

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 

Invocation:

$python myfile.py var1 var2 var3 

Ausgang:

Params= var1 var2 var3 
3

Wenn Sie es so nennen: $ python myfile.py var1 var2 var3

import sys 

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

Ähnlich wie Arrays haben Sie auch sys.argv[0], die immer das aktuelle Arbeitsverzeichnis ist.

1

Einige zusätzliche Dinge, die ich mir vorstellen kann.

Wie @allsyed sagte sys.argv gibt eine Liste von Komponenten (einschließlich Programmname), also wenn Sie die Anzahl der Elemente über die Befehlszeile wissen möchten, können Sie len() verwenden, um es zu bestimmen. Auf dieser Basis können Sie Ausnahmebedingungen erstellen, wenn der Benutzer bestimmte Parameter nicht übergeben hat.

Auch wenn Sie nach einem besseren Weg suchen Befehlszeilenargumente zu handhaben, würde ich vorschlagen, Sie sehen https://docs.python.org/2/howto/argparse.html

19

ich sehr argparse empfehlen, die mit Python angekommen 2.7 und höher.

Hier ein kleines Beispiel:

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) 

und der Ausgang für 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 

und für python3 prog.py 1 wie man erwarten würde:

2 
Verwandte Themen