So fügen Sie einem Python-Skript Befehlszeilenargumente hinzu

How Add Command Line Arguments Python Script



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 Codelesbarkeit, die Anwendungsstruktur und die allgemeine Benutzerfreundlichkeit der Anwendung für die Endbenutzer verbessern. 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 argparse verwenden. 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 argparse-Modul ü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:



importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

args= Parser.parse_args()

Die erste Anweisung importiert das argparse-Modul. Als nächstes wird eine neue Instanz des ArgumentParser-Objekts erstellt und eine kurze Beschreibung für das Programm als Argument bereitgestellt. Das ArgumentParser-Objekt wird benötigt, um die Argumentwerte der Befehlszeile 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 das oben genannte Codebeispiel in einer Datei namens test.py gespeichert, wenn Sie die folgenden Befehle ausführen, erhalten Sie Hilfemeldungen zum Programm.

$ ./Prüfung.py-h

$ ./Prüfung.py-Hilfe

Sie sollten eine ähnliche Ausgabe wie diese erhalten:



Verwendung: test.py [-h]


Ein Testprogramm.


optionale Argumente:

-h, --help Diese Hilfemeldung 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 in der Ausgabe keine Hilfemeldungen zu einzelnen Argumenten angezeigt. Sobald Sie Ihrem Programm eine Logik für die Behandlung von Werten der geparsten Argumente hinzugefügt haben, beginnen die Hilfemeldungen, Beschreibungen für einzelne Argumente anzuzeigen.

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:

importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

Parser.add_argument('print_string', Hilfe='Druckt das angegebene Argument.')

args= Parser.parse_args()

drucken(Argumente.print_string)

Eine neue Anweisung wurde hinzugefügt, die die Verwendung der Methode add_argument zeigt. 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 Werte, die aus Argumenten abgerufen werden, als Zeichenfolgen behandelt, sodass Sie den Typ in diesem Fall nicht explizit angeben müssen. Ein Standardwert von None 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]


Ein Testprogramm.


Positionsargumente:

print_string Gibt das angegebene Argument aus.


optionale Argumente:

-h, --help Diese Hilfemeldung anzeigen und beenden

Eine der Zeilen in der Ausgabe enthält Positionsargumente. Da kein Schlüsselwort für Argument definiert ist, wird das Argument derzeit als Positionsargument behandelt, wobei die Reihenfolge und Position des gelieferten 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 analysieren, können Sie – (Doppelstrich) verwenden und ihre Standardwerte mit dem Standardargument ändern.

importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

Parser.add_argument('--print_string', Hilfe='Druckt das angegebene Argument.',Ursprünglich=ZUwillkürlich Schnur.)

args= Parser.parse_args()

drucken(Argumente.print_string)

Wenn Sie nun das Skript test.py ohne Argument ausführen, sollten Sie eine zufällige Zeichenfolge erhalten. als Ausgabe. Optional können Sie auch das Schlüsselwort –print_string verwenden, um einen beliebigen String Ihrer Wahl zu drucken.

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

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

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

importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

Parser.add_argument(-P, '--print_string', Hilfe='Druckt das angegebene Argument.',Ursprünglich=ZUwillkürlich Schnur.)

args= Parser.parse_args()

drucken(Argumente.print_string)

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

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

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 zuzulassen und Fehler auszulösen, falls die Bedingung nicht erfüllt ist.

importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

Parser.add_argument('-P', '--print_string', Hilfe='Druckt das angegebene Argument.', Typ=int)

args= Parser.parse_args()

drucken(Argumente.print_string)

Versuchen Sie, den folgenden Befehl auszuführen:

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

Sie sollten eine Fehlermeldung wie diese erhalten:

Verwendung: test.py [-h] [-p PRINT_STRING]

test.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-P10001000

Beispiel 4: Behandeln von True- und False-Umschaltungen

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

importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

Parser.add_argument('-P', '--print_string', Hilfe='Druckt das angegebene Argument.',Handlung='store_true')

args= Parser.parse_args()

drucken(Argumente.print_string)

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

$ ./Prüfung.py-P

Wenn Sie das Skript ohne das Argument -p ausführen, wird stattdessen ein False-Wert 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:

importierenargparse

Parser =argparse.ArgumentParser(Bezeichnung='Ein Testprogramm.')

Parser.add_argument('-P', '--print_string', Hilfe='Druckt das angegebene Argument.',nargs='*')

args= Parser.parse_args()

drucken(Argumente.print_string)

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

$ ./Prüfung.py-p ein b

Sie sollten eine Ausgabe wie diese erhalten:

['a', 'b']

Abschluss

Das argparse-Modul 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 argparse-Moduls. Für fortgeschrittene und komplexe Anwendungen benötigen Sie möglicherweise unterschiedliche Implementierungen. Besuche den offizielle Dokumentation für eine vollständige Erklärung des Moduls.