Skripte robuster gestalten
Was passiert, wenn Sie das greet.py-Skript aus dem vorherigen Schritt ausführen, ohne einen Namen anzugeben? Versuchen wir es.
python greet.py
Sie werden auf einen Fehler stoßen.
Traceback (most recent call last):
File "/home/labex/project/greet.py", line 4, in <module>
name = sys.argv[1]
IndexError: list index out of range
Dieser IndexError tritt auf, weil das Skript versucht, auf sys.argv[1] zuzugreifen, aber da kein Argument übergeben wurde, existiert dieser Index nicht. Ein robustes Skript sollte solche Fälle ordnungsgemäß behandeln.
Lassen Sie uns greet.py ändern, um zu prüfen, ob ein Argument übergeben wurde. Wenn nicht, wird ein Standardname verwendet. Wir können die Anzahl der Elemente in der sys.argv-Liste mit der Funktion len() überprüfen. Wenn len(sys.argv) größer als 1 ist, bedeutet dies, dass mindestens ein Argument übergeben wurde.
Aktualisieren Sie Ihre greet.py-Datei mit dem folgenden Code:
import sys
if len(sys.argv) > 1:
## Verwenden Sie das übergebene Argument, falls es vorhanden ist
name = sys.argv[1]
else:
## Verwenden Sie einen Standardnamen, wenn kein Argument übergeben wird
name = "World"
print(f"Hello, {name}!")
Jetzt ist Ihr Skript robuster. Führen Sie es erneut ohne Argument aus:
python greet.py
Dieses Mal läuft es ohne Fehler und verwendet den Standardnamen.
Hello, World!
Und es funktioniert weiterhin korrekt, wenn Sie ein Argument übergeben:
python greet.py LabEx
Hello, LabEx!
Die Behandlung potenzieller Fehler und die Bereitstellung von Standardverhalten sind wichtige Praktiken für das Schreiben zuverlässiger Kommandozeilenanwendungen.