it-swarm.com.de

Wie greife ich in Python auf Befehlszeilenargumente zu?

Ich verwende python zum Einrichten meiner Projekteinstellungen, benötige jedoch Hilfe beim Abrufen der Befehlszeilenargumente.

Ich habe es am Terminal versucht:

$python myfile.py var1 var2 var3

In meiner Python Datei möchte ich alle Variablen verwenden, die eingegeben werden.

309

Python-Tutorial erklärt es :

import sys

print(sys.argv)

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

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

sys.argv[1:]

liefert eine Liste von Argumenten (ohne den Namen der python Datei)

95
Ryan Mentley

Ich kann argparse nur empfehlen, was mit Python 2.7 und höher geliefert wird.

Das argparse -Modul reduziert den Kesselplattencode und macht Ihren Code robuster, da das Modul alle Standardanwendungsfälle (einschließlich Unterbefehlen) verarbeitet, die Hilfe und Verwendung für Sie generiert, die Benutzereingaben überprüft und bereinigt - alles, was Sie tun Müssen Sie sich Sorgen machen, wenn Sie sys.argv Ansatz. Und es ist kostenlos (eingebaut).

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 die Ausgabe für python 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 python prog.py 1 wie erwartet:

2
73
Michael Dorner

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

Aufruf:

$python myfile.py var1 var2 var3

Ausgabe:

Params= var1 var2 var3 
47
Charles P.

Sie können sys.argv, um die Argumente als Liste abzurufen.

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

sys.argv[i]  

wobei i Index ist, 0 gibt den python Dateinamen an, der ausgeführt wird. Alle nachfolgenden Indizes sind die übergebenen Argumente.

22
allsyed

Wenn du es so nennst: $ python myfile.py var1 var2 var3

import sys

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

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

6
lvadim01

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 über die Befehlszeile übergebenen Elemente kennen möchten, können Sie sie mit len ​​() bestimmen. Auf dieser Grundlage können Sie Ausnahmen-/Fehlermeldungen entwerfen, wenn der Benutzer keine bestimmte Anzahl von Parametern übergeben hat.

Auch wenn Sie nach einer besseren Möglichkeit suchen, mit Befehlszeilenargumenten umzugehen, sollten Sie sich https://docs.python.org/2/howto/argparse.html ansehen

5
Rohan Sadale