In diesem Beitrag möchte ich dir aufzeigen wie du Kommandozeilenparameter mit sys.argv zu deinem Python Skript hinzufügen kannst und somit dein Programm / Projekt ggf. noch dynamischer aufbauen kannst.
Was sind Kommandozeilenparameter?
Wenn du Python3 bereits auf der Konsole (Linux oder Windows) ausgeführt hast dann wirst du mindestens schon einmal damit in Berührung gekommen sein.
Denn beim Aufrufen von
python3 helloWorld.py
ist der Dateiname “helloWorld.py” der Kommandozeilenparameter für die Anwendung “python3”.
Du kannst also einem Programm zusätzlich Informationen übergeben welche ggf. auf die Verarbeitung Einfluss nehmen können.
Auswerten von Kommandozeilenparameter
Damit du die übergebenen Kommandozeilenparameter in deinem Skript auswerten kannst, musst du zunächst das Modul “sys” importieren. Ich importiere jedoch gleich aus dem Modul “sys” die Klasse “argv” und gebe danach einmal die bisherigen Kommandozeilenparameter auf der Konsole aus.
from sys import argv print(argv)
Im folgenden Screenshot sehen wir das eine Liste mit bisher einem Wert zurück geliefert wird. (Zu erkennen an den eckigen Klammern.) Bisher ist nur ein Wert enthalten und dieses ist der Dateiname des Python3 Skript.
Ich verwende den Editor “Notepad++” welcher recht sparsam im Umgang mit Systemresourcen ist. In diesem Beitrag führe ich die Skripte auf der Eingabeaufforderung von Windows10 aus.
Wenn wir nun hinter dem Dateinamen des Python3 Skripts eine weitere Zeichenkette anhängen wird diese in die Liste aufgenommen.
C:\python3_test>python3 helloWorld.py Test ['helloWorld.py', 'Test'] C:\python3_test>
Sollte in der Zeichenkette jedoch ein Leerzeichen enthalten sein so wird diese als zwei Werte interpretiert.
C:\python3_test>python3 helloWorld.py Hier steht ein Text ['helloWorld.py', 'Hier', 'steht', 'ein', 'Text'] C:\python3_test>
Wenn du das nicht möchtest musst du diese Zeichenkette in Anführungszeichen setzen.
C:\python3_test>python3 helloWorld.py "Hier steht ein Text" ['helloWorld.py', 'Hier steht ein Text'] C:\python3_test>
Besonderheiten
Die Kommandozeilenparameter werden als Zeichenkette / String interpretiert auch wenn Zahlen übergeben werden. D.h. wir müssen die Werte zunächst umwandeln.
from sys import argv if len(argv) > 1: a = int(argv[1]) b = int(argv[2]) print (a+b)
ein kleines Beispiel – Greeting
Wollen wir nun ein kleines Beispiel schreiben. Es soll auf der Konsole eine Begrüßung ausgegeben werden.
Zunächst prüfen wir ob mehr als ein Parameter existiert. (Der erste Parameter ist ja der Dateiname des Skriptes.) Wenn dieses so ist dann soll eine Zeichenkette “Hallo + NAME” ausgegeben werden.
from sys import argv if len(argv) > 1: print("Hallo", argv[1], sep=" ")
C:\python3_test>python3 greeting.py Stefan Hallo Stefan C:\python3_test>
Sollten wir keinen zusätzlichen Parameter eingeben so wird auch keine Ausgabe auf der Konsole erfolgen.