Python

Python-Befehlszeilen-Parsing-Tutorial

Python-Befehlszeilen-Parsing-Tutorial
Beim Parsen wird eine Reihe von Texten analysiert, um herauszufinden, was das Programm mit den gegebenen Befehlen tun soll. Der Text wird in kleine Stücke, sogenannte Token, zerlegt, um die dem Compiler oder Interpreter bekannte Datenstruktur aufzubauen. Die Ausführung ergibt am Ende das beabsichtigte Ergebnis. Python wird oft als Sprache verwendet, um Befehlszeilen mit Leichtigkeit zu analysieren. Dieses Handbuch verwendet dieses spezielle Modul, das mit Python geliefert wird und als argparse bekannt ist. Das Besondere an argparse ist, dass es recht einfach zu bedienen, benutzerfreundlich, mit Python verfügbar ist und bei der einfachen Erstellung von Befehlszeilenschnittstellen hilft.

Die folgende Anleitung zeigt, wie Sie argparse in Ubuntu mit Python3 verwenden und somit sicherstellen, dass beide verfügbar sind, bevor Sie fortfahren. Wenn Python3 nicht verfügbar ist, kann es mit den folgenden beiden Befehlszeilen installiert werden:

sudo apt-get update
sudo apt-get install python3.6

Wesentliche Syntax

Der Zweck dieses Handbuchs besteht darin, die Kernfunktionen von argparse zu skizzieren und einige seiner Optionen zu verwenden. Argparse erfordert Python und einen Notizblock, um seine Befehle einzugeben. Ubuntu hat einen eigenen Notizblock, der als "Texteditor" bekannt ist und über Ubuntu Dash aufgerufen werden kann. Die Befehle werden über das Terminal ausgeführt.

  1. Starten Sie den Texteditor über Ubuntu Dash.
  2. Geben Sie die folgenden zwei Zeilen als die wesentlichen Codes ein. Die erste Zeile importiert das argparse-Modul in das Code-Snippet, während die zweite Zeile ein Argument-Parser-Objekt erstellt, das alle Informationen enthält, die zum Parsen von Befehlen in Python-Datentypen erforderlich sind. Argparse importieren
    Parser = argparse.ArgumentParser()
  3. Verwenden Sie den folgenden Befehl, um Argumentzeichenfolgen in Objekte umzuwandeln. Normalerweise wird das Objekt instanziiert und einer Variablen zugewiesen, aber es ist nicht notwendig. Parser.parse_args()
  4. Das Programm kann im Linux-Terminal über Python3 mit dem folgenden Befehl ausgeführt werden. python3 pscript.py

Anzeige der App-Beschreibung

Der App-Beschreibungsparameter soll angeben, wofür die Anwendung gedacht ist. Wenn der Befehl help mit dem Python-Skript verwendet wird, erscheint die App-Beschreibung zusammen mit den verfügbaren Flags, die im Programm verwendet werden können.  Die folgende Zeile muss für die Angabe der App-Beschreibung verwendet werden.

Parser = argparse.ArgumentParser(description='App-Beschreibung')

Anzeige der Beschreibung am Ende (Epilog)

Als Beschreibung kann der Epilog am Ende mit Epilog-Parameter angezeigt werden. Wie die Beschreibung muss sie auch in der argumentParser-Funktion angegeben werden.

Argumente verwenden

Argumente werden mit . definiert add_argument() Funktion. Es gibt an, welche Positionsargumente/Argumente mit dem Python-Skript verwendet werden sollen. Standardmäßig akzeptiert das Programm das Flag -help als Positionsargument, aber mit der oben genannten Funktion können weitere hinzugefügt werden. Es gibt viele Möglichkeiten, der Anwendung Argumente hinzuzufügen.

Einzelnes Positionsargument

Das einzelne Positionsargument stellt sicher, dass das Programm nur ein Argument akzeptiert. Im folgenden Beispiel wird bld als Argument angegeben; daher kann beim Ausführen des Programms nur bld als Positionsargument verwendet werden. Wenn das Argument fehlt, gibt das Programm einen Fehler mit einer Warnmeldung „zu wenige Argumente“ aus. Das Besondere an Positionsargumenten ist, dass es nicht im Terminal angegeben werden muss, wenn dem Programm Argumente übergeben werden.

Parser.add_argument("bld")

Positionsargument in einem bestimmten Typ

add_argument() nimmt nicht nur ein Argument an, sondern auch mehrere Argumente, wie im folgenden Beispiel zu sehen ist. Wenn mehrere Argumente angegeben werden, müssen sie wie folgt formatiert werden. Das erste Argument definiert den Namen des Positionsarguments, das zweite ist sein Typ, d. h. der Typ des Werts wird als Argument für das Programm akzeptiert, das letzte ist die Beschreibung, die nur bei Verwendung des Hilfe-Flags erscheint.

Im folgenden Screenshot wird dargestellt, wie das Programm sich weigert, einen nicht ganzzahligen Wert als Positionsargument zu akzeptieren. Hier kann jetzt nur ein ganzzahliger Wert eingereicht werden.

Parser.add_argument('bld', type=int,
help="ein ganzzahliger Wert ist erforderlich")

Optionales Positionsargument in einem bestimmten Typ

Die folgende Befehlszeile ist dieselbe wie die obige, außer dass das Positionsargument mit dem Parameter nargs optional ist; daher kann der Benutzer es bei der Ausführung des Programms weglassen. Wenn das Argument jedoch angegeben wurde, muss es den richtigen Datentyp aufweisen, sonst wird das Parsing nicht wie gewohnt fortgesetzt.

Parser.add_argument('bld', type=int, nargs='?',
help='Dieses Feld ist für optionalen Integer-Wert')

Optionales Argument in einem bestimmten Typ

Der Unterschied zwischen Argument und Positionsargument besteht darin, dass das Positionsargument nicht erwähnt werden muss, während das Argument bei der Ausführung des Programms zusammen mit seinem Wert als Flag erwähnt werden muss. Die folgende Befehlszeile enthält genau die gleichen Texte, mit Ausnahme der führenden Doppelzeilen (Bindestriche). Sie bedeuten, dass das Argument ein Argument/ein Flag ist, das bei der Ausführung des Programms zusammen mit einem Wert im angegebenen Typ erwähnt werden muss. Die Verwendung von Argumenten obligatorisch machen erforderlich=Wahr Parameter kann in der Funktion add_argument() als eines von anderen Argumenten verwendet werden. Wie oben erwähnt, führt die Nichteinhaltung des Formats zu einem Fehler.

Verwendung von kurzen Argumenten

Kurze Argumente wirken wie ihre längeren Gegenstücke. Der einzige Unterschied besteht darin, Platz zu sparen, wenn viele Befehlszeilen verwendet werden oder der Entwickler die Befehle ordentlich und so gut wie möglich organisiert halten möchte. Im folgenden Beispiel wird dargestellt, wie das Programm auf die beiden Argumente auf die gleiche Weise reagiert. Achten Sie bei der Verwendung der kurzen Argumente darauf, nur einen einzigen Bindestrich zu verwenden, da dies der Standard in der Branche ist.

Bedingte Argumente

Bedingte Argumente sind sehr einfach als Argumente in den vorherigen Beispielen zu verwenden. Der einzige Unterschied in diesem Segment besteht darin, den Aktionsparameter anzugeben. Es akzeptiert zwei Werte, store_true, und store_false. Wenn der Aktionsparameter als store_true angegeben ist, wird das Flag-Argument immer dann, wenn es im Programm verwendet wird, durch den booleschen Wert true zugewiesen; daher kann es als bedingtes Argument verwendet werden. Die Anwendung von bedingten Argumenten besteht darin, einen logischen Ablauf der Ausführung basierend auf den Benutzereingaben zu erstellen. Der Benutzer entscheidet also, welchen Weg er einschlagen möchte und wie das Programm abläuft. Die geparsten Befehle befinden sich im Namespace-Objekt, deshalb gibt es das namespace()-Schlüsselwort zurück, nachdem das Programm ausgeführt wurde.

Parser.add_argument('--bld', action='store_true',
help='bedingtes Argument')

Angeben des Programmnamens

Vor allem Beispiele geben nicht den Namen des Programms an. Stattdessen wird nur der Name der Skriptdatei zusammen mit der Liste der akzeptierten Argumente angegeben. Der Vorteil der Verwendung des Programmnamens besteht darin, dass das Programm benutzerfreundlicher und unabhängiger vom Skriptnamen ist. Dies ist sehr nützlich, wenn mehrere Skriptdateien an der Ausführung beteiligt sind. So wird der Benutzer nicht mit mehrdeutigen Namen verwechselt.

Die folgenden zwei Befehlszeilen müssen verwendet werden, um dies zu erreichen. In der ersten Zeile gibt es den Namen des Programms mit dem Parameter prog an, wobei dieser spezielle Parameter als Variable verwendet werden kann, wenn der Programmname verwendet wird. Wenn das Programm ausgeführt wird, wird der Parameter prog durch den in argumentParser( ) Funktion zusammen mit dem Parameter prog, was in diesem Beispiel „Nucuta App“ bedeutet. Außerdem ist es wichtig, den Befehl als %(prog)s sonst wird das Parsen nicht erfolgreich sein.

Parser = argparse.ArgumentParser(prog='Nucuta App')
Parser.add_argument('--bld', help='Dieses %(prog) ist es')

So prüfen Sie Bedingungen und gestalten den Ausführungsfluss

Der Ausführungsablauf wird mit IF ELSE-Klauseln definiert. Diese Klauseln leiten den Ausführungsablauf in Abhängigkeit von der Bedingung und ihrer Art. Im folgenden Beispiel wird der typisierte Integer-Wert einer Variablen bld zugewiesen, die sich im arg-Objekt befindet. Dann wird es mit einem vordefinierten Wert verglichen, um seinen Zustand zu überprüfen. In diesem Beispiel, wenn der eingegebene Wert größer als 10 ist, wird die erste Anweisung ausgeführt, ist der eingegebene Wert gleich 10, wird die zweite Anweisung ausgeführt, wenn der eingegebene Wert kleiner als 10 ist, wird die letzte Anweisung ausgeführt. Ebenso kann der Ausführungsablauf mit Leichtigkeit geführt werden. Wie das Beispiel zeigt, kann auf die Argumente über das von der parse_args()-Funktion zurückgegebene Objekt zugegriffen werden - args.

SCHLUSSFOLGERUNG

Mit dieser Anleitung sind Sie bereit, alle Befehlszeilen in Python zu parsen.  Viel Glück

SuperTuxKart für Linux
SuperTuxKart ist ein großartiger Titel, der entwickelt wurde, um Ihnen das Mario Kart-Erlebnis kostenlos auf Ihrem Linux-System zu bieten. Es ist ziem...
Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...
0 A.D. Lernprogramm
Von den vielen Strategiespielen da draußen, 0 A.D. schafft es, sich trotz Open Source als umfassender Titel und sehr tiefgehendes, taktisches Spiel ab...