Programmierung

Grundlagen des Parsens von Befehlszeilenargumenten in Python

Grundlagen des Parsens von Befehlszeilenargumenten in Python

Befehlszeilenanwendungen sind eine der ältesten und am häufigsten verwendeten Arten von Apps. Wenn Sie ein erfahrener Linux-Benutzer sind, haben Sie möglicherweise kaum GUI-Tools anstelle von Befehlszeilentools verwendet, um dieselbe Aufgabe zu erledigen. Anaconda, der Paketmanager für Python, verfügt beispielsweise über Befehlszeilentools namens Conda und ein GUI-Tool namens anaconda navigator.

Das, was die Befehlszeilenanwendung bei Entwicklern beliebt macht, ist, dass sie im Vergleich zu ihrem GUI-Gegenstück nur sehr wenige Ressourcen verbrauchen und eine bessere Leistung bieten.

Python ist eine einfache und leistungsstarke Sprache zum Erstellen von Befehlszeilenanwendungen. Es bietet jede Menge Bibliotheken, die bereits von vielen großartigen Programmierern geschrieben wurden, was unsere Aufgabe erleichtert, da wir nicht den gleichen Code neu schreiben müssen.

In diesem Tutorial stelle ich Ihnen die Argparse-Bibliothek von Python vor, die Argumente der Befehlszeilenanwendungen analysieren kann. Dies ist nützlich, um großartige Befehlszeilenschnittstellen zu erstellen. Um diesem Tutorial zu folgen, wird empfohlen, die neueste Version von Python installiert zu haben. Wir haben auch eine Schritt-für-Schritt-Anleitung zum Aktualisieren von Python auf die neueste Version unter Linux.

Einführung

Argumentanalyse ist ein wichtiges Konzept, das wir verwenden müssen, um leistungsstarke und benutzerfreundliche Befehlszeilenschnittstellen zu erstellen. Wenn Sie zuvor Befehlszeilenanwendungen verwendet haben, ist Ihnen vielleicht aufgefallen, dass wir den Befehlszeilenanwendungen Argumente hinzufügen können, um die Optionen des Tools zu konfigurieren.

Wenn Sie beispielsweise die ls Befehl in Linux, der zum Auflisten der aktuellen Arbeitsverzeichniselemente verwendet wird, haben Sie möglicherweise eine ähnliche Ausgabe gesehen, wie in der folgenden Abbildung gezeigt.

ls-Befehl unter Linux

Wie Sie im Bild sehen können, listet es die Elemente im aktuellen Verzeichnis auf. Wir können auch die ls Befehl vorteilhafter, indem Sie ihm ein Argument geben, wie ich es im folgenden Befehl getan habe did.

ls -a

Wenn Sie diesen Befehl nun im Terminal eingeben, werden alle im aktuellen Arbeitsverzeichnis vorhandenen Elemente aufgelistet, einschließlich der versteckten Elemente. Wie Sie sehen können, können wir durch die Angabe von Argumenten für den Befehl auf einfache Weise Optionen für den Befehl angeben. specify. Hier kommen Argumente ins Spiel. Sie machen die Befehlszeilenanwendungen nützlicher und benutzerfreundlicher.

Sie fragen sich vielleicht, wann und wie Sie Ihren Anwendungen Befehlszeilenargumente hinzufügen können. Stellen Sie sich vor, Sie erstellen eine Anwendung, die eine Benutzereingabe des Dateinamens benötigt, den die Anwendung verarbeiten wird.

Wir können es auf zwei Arten tun:

Der erste Trick ist gut, aber der zweite ist nützlicher, da der Benutzer alle Optionen in einem Befehl angeben kann, was ihn benutzerfreundlicher macht.

Python enthält eine großartige Bibliothek namens „argparse“, die zum Erstellen und Analysieren von Befehlszeilenargumenten nützlich ist und sehr einfach leistungsstarke Befehlszeilenschnittstellen für die Benutzer erstellen kann. Lassen Sie uns einen tiefen Einblick in die Argparse-Bibliothek von Python nehmen.

Argparse-Bibliothek

Das argparse Bibliothek ist eine einfache und nützliche Möglichkeit, Argumente zu analysieren, während Befehlszeilenanwendungen in Python erstellt werden. Obwohl es andere Argumente für das Parsen von Bibliotheken gibt, wie z optparse, getopt, usw., das argparse Bibliothek ist offiziell die empfohlene Methode zum Parsen von Befehlszeilenargumenten.

Es ist auch in der Standardbibliothek von Python verfügbar, sodass wir keine manuelle Konfiguration benötigen. Das argparse Bibliothek wurde mit dem erstellt optparse Python-Bibliothek, aber argparse ist nützlicher und entwicklerfreundlicher als die optparse Bibliothek.

Praktische Demo von Argparse

Sehen wir uns eine praktische Demo zur Verwendung der argparse-Bibliothek zum Erstellen einer einfachen Befehlszeilenschnittstelle an. Dieses Programm akzeptiert einen Pfad und prüft, ob der Pfad existiert oder nicht und wenn er existiert, dann druckt er, ob es sich um eine Datei oder ein Verzeichnis handelt.

import os import argparse parser = argparse.ArgumentParser('description = "Path Existence Checker") Parser.add_argument("--path", help="Geben Sie einen Pfad ein, um zu prüfen, ob er existiert") args = parser.parse_args() input_path = args.Pfad wenn os.Pfad.isdir(input_path): print("Der Pfad existiert und es ist ein Verzeichnis") elif os.Pfad.isfile(input_path): print("Der Pfad existiert und es ist eine Datei") else: print("Der Pfad existiert nicht")
Beim Ausführen des obigen Programms können wir überprüfen, ob der Pfad existiert oder nicht or.

Demo zum Parsen von Argumenten mit argparse

Sie können auch die -ha Argument mit dem Programm, das das Standardargument für die Anzeige von Hilfemeldungen ist.

argparse-Standardhilfenachricht

Lassen Sie mich Ihnen erklären, wie das obige Programm funktioniert. In den ersten beiden Zeilen haben wir die Module importiert, die wir im Programm benötigen. Das os Modul wurde importiert, um zu überprüfen, ob der Pfad existiert oder nicht und ob es sich um eine Datei oder ein Verzeichnis handelt. Wenn Sie mehr über die . erfahren möchten os Modul finden Sie in unserem Leitfaden zum Arbeiten mit Betriebssystemen in Pythonpy.In der nächsten Zeile haben wir die argparse-Bibliothek importiert, die zum Erstellen und Analysieren von Argumenten erforderlich ist. In der dritten Zeile erstellen wir ein Parser-Objekt mit der ArgumentParser-Klasse der argparse-Bibliothek. Diese Klasse akzeptiert auch eine optionale Parameterbeschreibung, die in der Hilfenachricht angezeigt wird.In der nächsten Zeile haben wir mit der Methode add_argument() des Parser-Objekts ein Argument namens path erstellt und geben die Details im help-Parameter an, die in der Hilfenachricht angezeigt werden, wie wir in der Ausgabe zuvor gesehen haben.Als nächstes parsen wir die Argumente mit der Methode parse_args() des Parser-Objekts und greifen auf den Benutzereingabepfad als Argument zu. Wir haben den Pfad erhalten, den der Benutzer in das Argument eingegeben hat, und haben ihn dann mit dem os-Modul verwendet, um zu überprüfen, ob es sich um eine Datei oder einen Ordner handelt. Wenn es nicht unter den beiden ist, wird ausgegeben, dass der Pfad nicht existiert.

Anpassung

Sehen wir uns einige der Anpassungen an, die wir mit Hilfe der Argparse-Bibliothek an unserer Befehlszeilenschnittstelle vornehmen können do.

Hilfe zur benutzerdefinierten Verwendung

Wenn wir das Demoprogramm ausführen, das wir zuvor mit dem erstellt haben -ha Parameter erhalten wir die Programmhilfe als Ausgabe, die die argparse-Bibliothek generiert hat. Wenn Sie die Hilfemeldung bemerken, finden Sie in der obersten Zeile eine Nutzungshilfe, die uns zeigt, wie Sie sie verwenden können.In unserem Demoprogramm haben wir die Standard-Nutzungshilfe. Wir können es immer noch leicht anpassen, indem wir den use-Parameter verwenden, während das Parser-Objekt mit der ArgumentParser()-Klasse erstellt wird. Sehen Sie sich den folgenden Code an, der in unserem Demoprogramm modifiziert werden soll.
Parser = argparse.ArgumentParser(description = "Path Existence Checker", use="cla.py-Pfad")
Hier ist die Ausgabe:

Hilfe zur benutzerdefinierten Verwendung in argparse

Wie wir in der Ausgabe sehen können, wurde die Verwendungshilfe in diejenige geändert, die wir im Verwendungsparameter der ArgumentParser()-Klasse angeben.

Anpassen von Argumenten

Wir können auch die Argparse-Bibliothek verwenden, um die Argumente anzupassen, ob die Argumente erforderlich sind oder nicht, und einem Argument einen Standardwert zuweisen.

Standardwert hinzufügen

Wir können den Argumenten einen Standardwert zuweisen, indem wir den Standardparameter an die add_argument() Methode. Siehe zum Beispiel den folgenden Code.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", use="cla.py-Pfad") Parser.add_argument("--path", help="Geben Sie einen Pfad ein, um zu prüfen, ob er existiert", default="filename.txt") args = Parser.parse_args() input_path = args.path if input_path == Keine: exit() elif os.Pfad.isdir(input_path): print("Der Pfad existiert und es ist ein Verzeichnis") elif os.Pfad.isfile(input_path): print("Der Pfad existiert und es ist eine Datei") else: print("Der Pfad existiert nicht")

Wenn wir das obige Programm ohne Argument ausführen, erhalten wir die folgende Ausgabe. Wie in der Ausgabe gezeigt, überprüft das Programm den Pfad Dateiname.TXT, die wir im Standardparameter setzen.

Argumenten einen Standardwert geben

Anforderungen an Argumente festlegen

Wir können auch die Argparse-Bibliothek verwenden, um die Anforderungen des Arguments festzulegen, d.e., ob die Argumente notwendig sind oder nicht. Dazu müssen wir den erforderlichen Parameter verwenden, wie im folgenden Code gezeigt.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", use="cla.py-Pfad") Parser.add_argument("--path", help="Geben Sie einen Pfad ein, um zu prüfen, ob er existiert", default="filename.txt", erforderlich=Wahr) args = Parser.parse_args() input_path = args.path if input_path == Keine: exit() elif os.Pfad.isdir(input_path): print("Der Pfad existiert und es ist ein Verzeichnis") elif os.Pfad.isfile(input_path): print("Der Pfad existiert und es ist eine Datei") else: print("Der Pfad existiert nicht")

Wenn Sie den obigen Code ohne Argumente ausführen, erhalten Sie eine Fehlermeldung, die besagt, dass die folgenden Argumente erforderlich sind.

die Anforderungen an Argumente festlegen

Argumenttyp

Wir können auch den im Argument verwendeten Datentyp festlegen. Wenn wir beispielsweise den Pfad benötigen, sollten wir einen String-Datentyp angeben. Wenn ein Benutzer einen Datentyp eingibt, der kein String ist, wandelt Argparser ihn in einen String um. Um den Standardtyp für ein Argument festzulegen, führen Sie den folgenden Code aus.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", use="cla.py-Pfad") Parser.add_argument("--path", help="Geben Sie einen Pfad ein, um zu prüfen, ob er existiert", type=str) args = parser.parse_args() input_path = args.path if input_path == Keine: exit() elif os.Pfad.isdir(input_path): print("Der Pfad existiert und es ist ein Verzeichnis") elif os.Pfad.isfile(input_path): print("Der Pfad existiert und es ist eine Datei") else: print("Der Pfad existiert nicht")

Ausgabe:

Angabe des Datentyps von Argumenten

Fazit

Dies sind nur die Grundlagen zum Parsen von Argumenten mit der Argparse-Bibliothek. Nachdem Sie dieses Tutorial durchgearbeitet haben, wird empfohlen, die offizielle Dokumentation zu lesen, um weitere Tricks bei der Verwendung dieser Bibliothek zu erkunden. Vielleicht möchten Sie auch den Beitrag zur Verwendung der Python-Anmeldung lesen, der sehr nützlich ist, um große Anwendungen zu schreiben und das Debuggen zu vereinfachen.

Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...
So verwenden Sie die GameConqueror-Cheat-Engine unter Linux
Der Artikel enthält eine Anleitung zur Verwendung der GameConqueror-Cheat-Engine unter Linux. Viele Benutzer, die Spiele unter Windows spielen, verwen...