Vor kurzem studiere ich Pathons Befehlszeilen-Parsing-Tool argparse, ein empfohlenes Tool in der Python-Standardbibliothek zum Schreiben von Befehlszeilenprogrammen.
Früher habe ich UI-Programme gemacht, aber heute habe ich das Befehlszeilenprogramm ausprobiert. Es fühlt sich sehr gut an, dass ich nicht viel Zeit damit verbringen muss, Schnittstellenprobleme zu studieren, was besonders umständlich ist .
Jetzt wird Python zur Implementierung der Befehlszeile verwendet. Das Core-Computing-Modul kann selbst als Erweiterungsbibliothek in C geschrieben werden, und der Effekt ist recht gut.
Ich habe argparse gelernt, einen Artikel in der offiziellen Dokumentation gefunden und ihn kurz übersetzt.
http://docs.python.org/2/howto/argparse.html#id1
Argparse-Tutorial
Dieses Tutorial stellt kurz die vom Zeilenparameter der Python-Standardbibliothek empfohlenen Befehle vor Parsing-Modul – die Verwendung von Argparse.
1. Grundkonzepte
In diesem Tutorial verwenden wir einen allgemeinen ls-Befehl, um die Funktion von argparse zu demonstrieren.
$ ls cpython devguide prog.py pypy rm-unused-function.patch $ ls pypy ctypes_configure demo dotviewer include lib_pypy lib-python ... $ ls -l total 20 drwxr-xr-x 19 wena wena 4096 Feb 18 18:51 cpython drwxr-xr-x 4 wena wena 4096 Feb 8 12:04 devguide -rwxr-xr-x 1 wena wena 535 Feb 19 00:05 prog.py drwxr-xr-x 14 wena wena 4096 Feb 7 00:59 pypy -rw-r--r-- 1 wena wena 741 Feb 18 01:01 rm-unused-function.patch $ ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Aus den oben genannten vier Befehlen können wir die folgenden Grundkonzepte verstehen:
1), ls-Befehl in Es kann auch Ohne Parameter ausgeführt werden, werden standardmäßig alle Inhalte im aktuellen Verzeichnis gedruckt.
2) Wenn wir möchten, dass mehr Inhalte angezeigt werden, müssen wir ihm mehr Parameter geben. In diesem Fall möchten wir ein anderes Verzeichnis anzeigen, pypy. Wir haben das allgemeine Positionsargument angegeben, das so genannt wird, weil das Programm anhand der Position des Arguments in der Befehlszeile entscheiden muss, was zu tun ist. Dieses Konzept ähnelt eher dem Befehl cp. Seine Verwendung ist cp src dest. src stellt die Datei dar, die Sie kopieren möchten, und dest gibt an, wohin Sie die Datei kopieren möchten.
3) Jetzt möchte ich das Verhalten des Programms ändern. In unserem Beispiel möchte ich die Westward-Informationen der Datei anzeigen und nicht nur den Dateinamen. Der Parameter -l ist das optionale Argument, das wir kennen (optinales Argument)
4), und der letzte Satz dient der Anzeige der Hilfe Dokument Ein Ausschnitt, mit dem Sie lernen können, wie Sie einen Befehl verwenden, den Sie noch nie zuvor verwendet haben.
2. Grundverständnis
Wir beginnen mit einem Grundprogramm (es macht nichts)
import argparse parser = argparse.ArgumentParser() parser.parse_args()
Ausführungsergebnisse:
$ python prog.py $ python prog.py --help usage: prog.py [-h] optional arguments: -h, --help show this help message and exit $ python prog.py --verbose usage: prog.py [-h] prog.py: error: unrecognized arguments: --verbose $ python prog.py foo usage: prog.py [-h] prog.py: error: unrecognized arguments: foo
Ergebnisanalyse:
1) Wenn Sie dieses Programm ohne Angabe von Parametern ausführen, werden keine Ergebnisse angezeigt erhalten werden.
2) Die zweite Benennung zeigt die Vorteile der Verwendung von argparse. Sie haben nichts getan, außer eine gute Hilfenachricht zu erhalten.
3) Wir können eine gute Hilfemeldung erhalten, ohne den Parameter --help manuell festzulegen. Wenn jedoch andere Parameter (z. B. foo) angegeben werden, wird ein Fehler generiert.
3. Positionsparameter
Geben Sie zunächst ein Beispiel:
import argparse parser = argparse.ArgumentParser() parser.add_argument("echo") args = parser.parse_args() print args.echo
Laufergebnis:
$ python prog.py usage: prog.py [-h] echo prog.py: error: the following arguments are required: echo $ python prog.py --help usage: prog.py [-h] echo positional arguments: echo optional arguments: -h, --help show this help message and exit $ python prog.py foo foo
Ergebnisanalyse:
Dieses Mal haben wir eine add_argument()-Methode hinzugefügt, um die Befehlszeile für den Programmparameter akzeptabel festzulegen.
Um das Programm auszuführen, müssen Sie nun einen Parameter festlegen. Die
parse_args()-Methode gibt tatsächlich einige Daten aus unseren Befehlszeilenargumenten zurück, im obigen Beispiel ist es echo
Dieser „magische“ Prozess wird von argparse automatisch abgeschlossen.
Obwohl die automatisch generierten Hilfeinformationen schön angezeigt werden, können wir anhand des Echo-Parameters immer noch nicht wissen, was sie tun. Deshalb haben wir ein paar Dinge hinzugefügt, um es nützlicher zu machen.
import argparse parser = argparse.ArgumentParser() parser.add_argument("echo", help="echo the string you use here") args = parser.parse_args() print args.echo
Laufergebnisse:
$ python prog.py -h usage: prog.py [-h] echo positional arguments: echo echo the string you use here optional arguments: -h, --help show this help message and exit
Auf dieser Grundlage Let's etwas mehr ändern: (Quadrat des Eingabeparameters Quadrat berechnen)
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number") args = parser.parse_args() print args.square**2
Das Folgende ist das laufende Ergebnis:
$ python prog.py 4 Traceback (most recent call last): File "prog.py", line 5, in <module> print args.square**2 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Dieses Programm wird nicht korrekt ausgeführt, da argparse die Eingabe als Zeichenfolge behandelt, daher müssen wir seinen Typ festlegen: (type=int)
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number", type=int) args = parser.parse_args() print args.square**2
Das Folgende sind die Ergebnisse:
$ python prog.py 4 16 $ python prog.py four usage: prog.py [-h] square prog.py: error: argument square: invalid int value: 'four'
Jetzt läuft dieses Programm reibungslos und kann damit umgehen Einige Tippfehler.
Das Obige ist ein einfaches Tutorial zur Verwendung des Python-Befehlszeilen-Parsing-Tools Argparse. Ich hoffe, es wird für alle hilfreich sein.
Eine ausführlichere Einführung in das Python-Befehlszeilen-Parsing-Tool Argparse und verwandte Artikel finden Sie auf der chinesischen PHP-Website!