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 importierenParser = 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 importierenParser = 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 importierenParser = 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.comLinuxHinweis.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 importierenParser = 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.comBeispiel 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 importierenParser = 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.comSie 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 1000Beispiel 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 importierenParser = 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 -pWenn 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 importierenParser = 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.