目次
1. Grundlegende Verwendung von Kommandozeilenargumenten in Python
Was sind Kommandozeilenargumente?
Kommandozeilenargumente sind zusätzliche Informationen, die beim Ausführen eines Python-Programms zusammen mit dem Ausführungskommando übergeben werden. Dadurch kann das Verhalten des Programms flexibel verändert oder externe Daten einfach bereitgestellt werden. Zum Beispiel können Dateinamen oder Konfigurationswerte als Argumente übergeben werden, um den Programmablauf dynamisch anzupassen.Abrufen von Kommandozeilenargumenten mit sys.argv
In Python können Kommandozeilenargumente mit dem Standardmodul sys
abgerufen werden. sys.argv
ist eine Variable, die die Kommandozeilenargumente in Form einer Liste speichert. Das erste Element der Liste (sys.argv[0]
) ist der Name des ausgeführten Skripts, und die folgenden Elemente sind die übergebenen Argumente.Beispielcode: Einfaches Rechenprogramm
import sys
def main():
if len(sys.argv) < 3:
print("Fehler: Es werden 2 Argumente benötigt")
return
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
print(f"Summe: {num1 + num2}")
if __name__ == "__main__":
main()
Das obige Programm summiert zwei über die Kommandozeile übergebene Zahlen und gibt das Ergebnis aus. Beispielausführung:$ python script.py 3 5
Summe: 8.0

2. Erweiterte Argumentverarbeitung mit dem argparse
-Modul
Grundlagen von argparse
Mit sys.argv
lassen sich einfache Argumente verarbeiten. Wenn jedoch die Anzahl der Argumente steigt oder optionale Argumente und Flags (z. B. --verbose
) benötigt werden, ist das Standardmodul argparse
sehr praktisch. Dieses Modul erleichtert die Analyse von Argumenten und erstellt automatisch Fehlermeldungen.Erstellen eines Parsers und Analysieren von Argumenten
Umargparse
zu verwenden, erstellt man zunächst einen Parser, definiert die Argumente und analysiert anschließend die übergebenen Kommandozeilenargumente.Beispielcode: Grundlegende Verwendung von argparse
import argparse
def main():
parser = argparse.ArgumentParser(description='Dies ist ein Beispielprogramm')
parser.add_argument('arg1', help='Erstes Argument')
parser.add_argument('arg2', type=float, help='Zweites numerisches Argument')
args = parser.parse_args()
print(f"arg1 = {args.arg1}")
print(f"arg2 = {args.arg2}")
if __name__ == "__main__":
main()
Dieses Programm nimmt zwei Argumente entgegen. arg1
wird als Zeichenkette, arg2
als Zahl behandelt und nach der Analyse ausgegeben.$ python script.py test 5.5
arg1 = test
arg2 = 5.5
Verarbeitung von optionalen Argumenten und Flags
Eine der stärksten Funktionen vonargparse
ist die Unterstützung von optionalen Argumenten und Flags. Damit lässt sich Code schreiben, der nur bei Angabe bestimmter Argumente ausgeführt wird, oder es können detailliertere Ausgaben erzeugt werden (z. B. mit dem Flag --verbose
).Beispielcode: Verwendung von optionalen Argumenten und Flags
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true', help='Detaillierte Ausgabe anzeigen')
parser.add_argument('numbers', nargs='+', type=float, help='Liste von Zahlen')
args = parser.parse_args()
total = sum(args.numbers)
if args.verbose:
print(f"Berechnungsdetails: Die Summe von {args.numbers} ist {total}")
else:
print(f"Summe: {total}")
if __name__ == "__main__":
main()
Wenn das Flag --verbose
gesetzt ist, wird eine detaillierte Ausgabe erzeugt. Ohne dieses Flag erscheint nur das einfache Ergebnis.$ python script.py 1 2 3 --verbose
Berechnungsdetails: Die Summe von [1.0, 2.0, 3.0] ist 6.0

3. Fehlerbehandlung und Validierung von Argumenten
Überprüfung der Anzahl und des Typs von Argumenten
Bei der Arbeit mit Kommandozeilenargumenten ist es wichtig, Fehlermeldungen auszugeben, wenn Benutzer falsche Eingaben machen, um Fehlfunktionen des Programms zu verhindern. Durch die Validierung von Anzahl und Typ der Argumente bleibt die Stabilität des Programms erhalten.Beispielcode: Überprüfung der Anzahl und des Typs von Argumenten
import sys
def main():
if len(sys.argv) != 3:
print("Fehler: Es werden genau 2 Argumente benötigt")
return
try:
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
except ValueError:
print("Fehler: Die Argumente müssen numerisch sein")
return
print(f"Summe: {num1 + num2}")
if __name__ == "__main__":
main()
In diesem Programm wird überprüft, ob genau drei Argumente (Skriptname + 2 Zahlen) vorhanden sind. Falls nicht oder falls die Eingaben keine Zahlen sind, erscheint eine Fehlermeldung.4. Praxisbeispiele und Anwendungen
Beispiel für die Erstellung eines Kommandozeilen-Tools
Ein praktischer Anwendungsfall für Kommandozeilenargumente ist die Erstellung von Tools für Dateioperationen oder Datenverarbeitung.Beispielcode: Tool zum Zählen von Zeilen in einer Datei
import argparse
def main():
parser = argparse.ArgumentParser(description='Ein Tool zum Zählen der Zeilen in einer Datei')
parser.add_argument('filename', help='Name der zu zählenden Datei')
args = parser.parse_args()
try:
with open(args.filename, 'r') as file:
lines = file.readlines()
print(f"Datei {args.filename} enthält {len(lines)} Zeilen")
except FileNotFoundError:
print(f"Fehler: Datei {args.filename} wurde nicht gefunden")
if __name__ == "__main__":
main()
Dieses Tool zählt die Zeilen der angegebenen Datei und gibt das Ergebnis aus.$ python count_lines.py example.txt
Datei example.txt enthält 100 Zeilen
5. Fazit
Das Verständnis von Kommandozeilenargumenten in Python ermöglicht es, Programme flexibler zu gestalten. Von einfachen Methoden mitsys.argv
bis hin zur komplexeren Verarbeitung mit argparse
kann je nach Bedarf die passende Lösung gewählt werden. Zudem lassen sich durch Fehlerbehandlung und Validierung stabilere Programme entwickeln.