Parsen von Kommandozeilenargumenten mit Python
Beim Ausführen von Python-Programmen über die Befehlszeile oder Shell können wir Werte in Form von Strings, technisch gesehen Argumente oder Optionen, an das Programm übergeben. Das Programm kann auf diese Werte zugreifen und seine Ausführung durchführen und diese Werte sogar für Berechnungen verwenden.
In diesem Artikel wird erläutert, wie wir diese Befehlszeilenargumente mit Python analysieren und verwenden können.
Parsen von Kommandozeilenargumenten mit dem optparse
-Modul
Das Modul optparse
ist ein flexibles und praktisches Python-Paket zum Parsen von Befehlszeilenoptionen. Es ist im Standard-Python integriert. Es verwendet eine deklarative Methode zum Analysieren von Befehlszeilenoptionen. Um dieses Paket zu verwenden, müssen wir zunächst ein Objekt der Klasse OptionParser
erstellen und dann mit Hilfe der Methode add_option()
Details zu den möglichen Optionen oder Argumenten hinzufügen. Die Methode add_option()
akzeptiert Argumente wie option
(der Optionsname), type
(der Datentyp der Option), help
(der Hilfetext für die Option) und default
(der Standardwert für die Option, falls nicht im Befehl angegeben). Um die Optionen und ihre Werte aus dem Kommandozeilenbefehl in Form eines Dictionaries zu erhalten, können wir die Methode parse_args()
verwenden.
Lassen Sie uns die Verwendung dieser Bibliothek anhand eines Beispiels besser verstehen. Wir implementieren ein einfaches Python-Programm, das nach drei Optionen sucht: -a
, -b
und -c
. Dabei stellen -a
und -b
die Operanden dar, +
ist der Operator und -c
ist im Wesentlichen die Zielsumme. Außerdem überprüft der Code diese Werte, weist ihnen den Wert 0
zu, wenn kein Wert im Befehlszeilenbefehl gefunden wird, und prüft zuletzt, ob a + b
gleich c
ist oder nicht. Darüber hinaus werden die Ergebnisse auch in einer gut formatierten Zeichenkette ausgegeben.
import optparse
parser = optparse.OptionParser()
parser.add_option("-a", help="First Number", default=0)
parser.add_option("-b", help="Second Number", default=0)
parser.add_option("-c", help="Sum", default=0)
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
c = int(options.c)
s = a + b
print(f"{a} + {b} = {s} and {s} {'==' if s == c else '!='} {c}")
Hier ist eine kurze Erklärung des obigen Codes. Zuerst erstellt es ein Klassenobjekt OptionParser()
und fügt Informationen über die drei Zieloptionen hinzu; -a
, -b
und -c
. Dann durchläuft es die Befehlszeile oder den Shell-Befehl, um nach den erforderlichen Optionen zu suchen. Schließlich speichert es alle Werte in separaten Variablen, berechnet die Summe oder a + b
und vergleicht sie mit der Zielsumme oder c
.
Lassen Sie uns dieses Programm auf die folgenden Befehle testen.
python main.py -a 1 -b 2 -c 3
python main.py -a 1
python main.py -b 2
python main.py -c 3
python main.py 1 2 3
python main.py -a 1 2 3
python main.py 1 -b 2 3
python main.py 1 2 -c 3
python main.py 0 0 0
python main.py
Ausgabe:
1 + 2 = 3 and 3 == 3
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
0 + 0 = 0 and 0 == 0
Aus den Ausgaben können wir ableiten, dass die Standardwerte berücksichtigt werden, wenn keine Schlüsselwortoptionen oder Argumente für die Befehlszeile oder den Shell-Befehl bereitgestellt werden. Lesen Sie die Testbefehle mit Ausnahme des ersten (python main.py -a 1 -b 2 -c 3
) für eine bessere Analyse.