Ich verwende Python, um meine Projekteinstellungen einzurichten, benötige jedoch Hilfe beim Abrufen der Befehlszeilenargumente.
Ich habe das auf dem Terminal versucht:
$python myfile.py var1 var2 var3
In meiner Python-Datei möchte ich alle eingegebenen Variablen verwenden.
python
command-line
ParisNakitaKejser
quelle
quelle
Antworten:
Das Python-Tutorial erklärt es :
Genauer gesagt, wenn Sie ausführen
python example.py one two three
:quelle
gibt Ihnen eine Liste von Argumenten (ohne den Namen der Python-Datei)
quelle
[1:]
das[1:]
nach oben, da das erste Argumentsys.argv
standardmäßig der Name der Python-Datei ist, die Sie beispielsweise ausführentestrun.py
.Ich kann nur empfehlen,
argparse
was mit Python 2.7 und höher geliefert wird.Das
argparse
Modul reduziert den Code der Kesselplatte und macht Ihren Code robuster, da das Modul alle Standardanwendungsfälle (einschließlich Unterbefehle) behandelt, die Hilfe und Verwendung für Sie generiert, die Benutzereingaben überprüft und bereinigt - alles, worüber Sie sich Sorgen machen müssen, wenn Sie verwendensys.argv
Ansatz. Und es ist kostenlos (eingebaut).Hier ein kleines Beispiel:
und die Ausgabe für
python prog.py -h
und
python prog.py 1
wie zu erwarten:quelle
parser.add_argument('var3', nargs='?', type=int, default=3)
Um den Standardwert ohne bestimmten Wert in der Befehlszeile zu verwenden, können Sie Folgendes verwenden: var3 ist ein optionaler Parameter. Wenn Sie in der Befehlszeile keinen Wert angeben, können Sie in Ihrem Code auf var3 zugreifen, Standardwert für var3 = 3Python-Code:
Aufruf:
Ausgabe:
quelle
Sie können
sys.argv
die Argumente als Liste abrufen.Wenn Sie auf einzelne Elemente zugreifen müssen, können Sie verwenden
Wo
i
ist Index,0
gibt Ihnen den Python-Dateinamen, der ausgeführt wird. Jeder Index danach sind die übergebenen Argumente.quelle
Wenn Sie es so nennen:
$ python myfile.py var1 var2 var3
Ähnlich wie bei Arrays haben Sie auch
sys.argv[0]
immer das aktuelle Arbeitsverzeichnis.quelle
sys.argv[0]
ist nicht das aktuelle Arbeitsverzeichnis. Dies ist der Name der Datei, die ausgeführt wird.Einige zusätzliche Dinge, an die ich denken kann.
Wie @allsyed sagte, gibt sys.argv eine Liste der Komponenten (einschließlich des Programmnamens) an. Wenn Sie also die Anzahl der Elemente wissen möchten, die über die Befehlszeile übergeben werden, können Sie sie mit len () bestimmen. Auf dieser Grundlage können Sie Ausnahme- / Fehlermeldungen entwerfen, wenn der Benutzer keine bestimmte Anzahl von Parametern übergeben hat.
Auch wenn Sie nach einer besseren Möglichkeit suchen, mit Befehlszeilenargumenten umzugehen, empfehlen wir Ihnen, sich https://docs.python.org/2/howto/argparse.html anzusehen
quelle