Python

So fügen Sie einem Python-Skript Befehlszeilenargumente hinzu?

So fügen Sie einem Python-Skript Befehlszeilenargumente hinzu?
Wenn Sie ein Python-Skript oder eine Python-Anwendung entwickelt haben, die hauptsächlich in Terminalemulatoren oder sogar GUI-Apps ausgeführt werden soll, kann das Hinzufügen von Befehlszeilenargumenten die Benutzerfreundlichkeit, die Lesbarkeit des Codes, die Anwendungsstruktur und die allgemeine Benutzerfreundlichkeit der Anwendung verbessern die Endverbraucher. Diese Befehlszeilenargumente werden auch „Optionen“ oder „Schalter“ genannt und funktionieren ähnlich wie Argumente, die Sie normalerweise in Bash-Skripten und anderen C/C++-basierten Programmen sehen.

Um Argumente zu Python-Skripten hinzuzufügen, müssen Sie ein integriertes Modul namens . verwenden "argparse". Wie der Name schon sagt, analysiert es Befehlszeilenargumente, die beim Starten eines Python-Skripts oder einer Python-Anwendung verwendet werden. Diese geparsten Argumente werden auch vom Modul „argparse“ überprüft, um sicherzustellen, dass sie vom richtigen „Typ“ sind. Fehler werden ausgelöst, wenn Argumente ungültige Werte enthalten.

Die Verwendung des argparse-Moduls lässt sich am besten anhand von Beispielen verstehen. Nachfolgend finden Sie einige Codebeispiele, die Ihnen den Einstieg in das argparse-Modul erleichtern.

Beispiel 1: Hilfeargument und Meldung generieren

Betrachten Sie das folgende Codebeispiel:

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
args = Parser.parse_args()

Die erste Anweisung importiert das Modul „argparse“. Als nächstes wird eine neue Instanz des „ArgumentParser“-Objekts erstellt und eine kurze Beschreibung des Programms als Argument geliefert. Das ArgumentParser-Objekt wird benötigt, um Befehlszeilenargumentwerte in Datentypen zu konvertieren, die von Python verstanden werden. Dies geschieht durch die Methode „parse_args“ des ArgumentParser-Objekts, wie in der letzten Anweisung gezeigt.

Angenommen, Sie haben den oben genannten Beispielcode in einer Datei namens „test“ gespeichert.py“, wenn Sie die folgenden Befehle ausführen, um Hilfenachrichten zum Programm zu erhalten.

$ ./Prüfung.py -h
$ ./Prüfung.py --help

Sie sollten eine ähnliche Ausgabe wie diese erhalten:

Verwendung: Test.py [-h]
Optionale Argumente eines Testprogramms:
-h, --help Diese Hilfenachricht anzeigen und beenden

Beachten Sie, dass dem oben erwähnten Codebeispiel keine Logik hinzugefügt wurde, um geparste Argumente zu verarbeiten und in Objekte zu konvertieren. Daher werden Hilfemeldungen zu einzelnen Argumenten nicht in der Ausgabe angezeigt. Sobald Sie Ihrem Programm Logik für die Handhabung von Werten der geparsten Argumente hinzufügen, werden Hilfemeldungen mit Beschreibungen für einzelne Argumente beginnen.

Beispiel 2: Behandeln eines String-Arguments

Um von Ihrem Python-Skript akzeptable Argumente hinzuzufügen, müssen Sie die Methode "add_argument" verwenden. Schauen Sie sich den folgenden Code an:

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
Parser.add_argument("print_string", help="Druckt das angegebene Argument.")
args = Parser.parse_args()
drucken (args.print_string)

Eine neue Anweisung wurde hinzugefügt, die die Verwendung der Methode „add_argument“ zeigt showing. Jedes Argument, das beim Starten des Skripts hinzugefügt wird, wird von „ArgumentParser“ als „print_string“-Objekt behandelt.

Beachten Sie, dass die Methode „add_argument“ standardmäßig aus Argumenten abgerufene Werte als Strings behandelt, sodass Sie in diesem Fall den „Typ“ nicht explizit angeben müssen. Ein Standardwert von „Keine“ wird auch hinzugefügten Argumenten zugewiesen, es sei denn, sie werden überschrieben.

Schauen Sie sich noch einmal die Hilfemeldung an:

Verwendung: Test.py [-h] [print_string]
Positionsargumente eines Testprogramms:
print_string gibt das übergebene Argument aus
optionale Argumente:
-h, --help Diese Hilfenachricht anzeigen und beenden

Eine der Zeilen in der Ausgabe sagt "Positionsargumente". Da kein Schlüsselwort für Argument definiert ist, wird das Argument derzeit als „Positionsargument“ behandelt, wobei die Reihenfolge und Position des übergebenen Arguments einen direkten Einfluss auf das Programm hat. Positionsargumente sind ebenfalls obligatorisch, es sei denn, Sie ändern ihr Verhalten manuell.

Um optionale Argumente zu definieren und zu parsen, können Sie „-“ (Doppelstrich) verwenden und ihre Standardwerte mit dem „default“-Argument ändern.

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
Parser.add_argument("--print_string", help="Druckt das angegebene Argument.", default=”Eine zufällige Zeichenfolge.“)
args = Parser.parse_args()
drucken (args.print_string)

Wenn Sie jetzt den "Test" ausführen.py“-Skript ohne Argumente erhalten, sollten Sie „Eine zufällige Zeichenfolge“ erhalten.” als Ausgabe. Sie können auch optional das Schlüsselwort „-print_string“ verwenden, um eine beliebige Zeichenfolge Ihrer Wahl zu drucken.

$ ./Prüfung.py --print_string LinuxHint.com
LinuxHinweis.com

Beachten Sie, dass Sie ein optionales Argument obligatorisch machen können, indem Sie ein zusätzliches Argument „required=True“ verwenden.

Schließlich können Sie auch Kurzversionen des Arguments mit „-“ (einem einzelnen Bindestrich) definieren, um die Ausführlichkeit zu reduzieren.

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
Parser.add_argument(“-p”, "--print_string", help="Druckt das übergebene Argument.", default=”Eine zufällige Zeichenfolge.“)
args = Parser.parse_args()
drucken (args.print_string)

Wenn Sie den folgenden Befehl ausführen, sollten Sie das gleiche Ergebnis wie oben erhalten:

$ ./Prüfung.py -p LinuxHinweis.com

Beispiel 3: Behandeln eines Integer-Arguments

Um Argumente zu verarbeiten, die ganzzahlige Werte benötigen, müssen Sie das Schlüsselwort „type“ auf „int“ setzen, um eine Validierung zu ermöglichen und Fehler auszulösen, falls die Bedingung nicht erfüllt ist.

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
Parser.add_argument("-p", "--print_string", help="Druckt das angegebene Argument.", type=int)
args = Parser.parse_args()
drucken (args.print_string)

Versuchen Sie, den folgenden Befehl auszuführen:

$ ./Prüfung.py -p LinuxHinweis.com

Sie sollten eine Fehlermeldung wie diese erhalten:

Verwendung: Test.py [-h] [-p PRINT_STRING]
Prüfung.py: Fehler: Argument -p/--print_string: ungültiger int-Wert: 'LinuxHint.com'

Wenn Sie einen ganzzahligen Wert angeben, erhalten Sie das richtige Ergebnis:

$ ./Prüfung.py -p 1000 1000

Beispiel 4: Behandeln von True- und False-Umschaltungen

Sie können Argumente ohne Werte übergeben, um sie mit dem Argument "action" als True- und False-Flags zu behandeln.

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
Parser.add_argument("-p", "--print_string", help="Druckt das angegebene Argument.", action="store_true")
args = Parser.parse_args()
drucken (args.print_string)

Führen Sie den folgenden Befehl aus, um ein einfaches „Wahr“ als Ausgabe zu erhalten:

$ ./Prüfung.py -p

Wenn Sie das Skript ohne das Argument „-p“ ausführen, wird stattdessen ein Wert „False“ zugewiesen. Der Wert „store_true“ des Schlüsselworts „action“ weist der Variablen „print_string“ immer dann den Wert „True“ zu, wenn das Argument „-p“ explizit angegeben wird, andernfalls wird der Variablen False zugewiesen.

Beispiel 5: Argumentwerte als Liste behandeln

Wenn Sie mehrere Werte gleichzeitig abrufen und in einer Liste speichern möchten, müssen Sie das Schlüsselwort "nargs" im folgenden Format angeben:

Argparse importieren
Parser = argparse.ArgumentParser(description='Ein Testprogramm.')
Parser.add_argument("-p", "--print_string", help="Druckt das angegebene Argument.", nargs='*')
args = Parser.parse_args()
drucken (args.print_string)

Führen Sie den folgenden Befehl aus, um den obigen Code zu testen:

$ ./Prüfung.py -p „a“ „b“

Sie sollten eine Ausgabe wie diese erhalten:

['a', 'b']

Fazit

Das Modul „argparse“ ist ziemlich umfassend mit unzähligen Optionen, um das Verhalten von Befehlszeilenanwendungen zu optimieren und vom Benutzer bereitgestellte Werte zu analysieren. Diese Beispiele berühren nur die grundlegende Verwendung des Moduls „argparse“. Für fortgeschrittene und komplexe Anwendungen benötigen Sie möglicherweise unterschiedliche Implementierungen. Besuchen Sie die offizielle Dokumentation für eine vollständige Erklärung des Moduls.

So installieren und spielen Sie Doom unter Linux
Einführung in Doom Die Doom-Serie entstand in den 90er Jahren nach der Veröffentlichung des ursprünglichen Doom. Es war sofort ein Hit und seitdem hat...
Vulkan für Linux-Benutzer
Mit jeder neuen Grafikkartengeneration stoßen Spieleentwickler an die Grenzen der grafischen Wiedergabetreue und kommen dem Fotorealismus einen Schrit...
OpenTTD vs. Simutrans
Das Erstellen einer eigenen Transportsimulation kann Spaß machen, entspannend und äußerst verlockend sein. Deshalb sollten Sie so viele Spiele wie mög...