Heim > Backend-Entwicklung > Python-Tutorial > Detaillierte Einführung in die Verwendung von docopt, dem Analysetool für Befehlszeilenparameter in Python

Detaillierte Einführung in die Verwendung von docopt, dem Analysetool für Befehlszeilenparameter in Python

高洛峰
Freigeben: 2017-03-28 09:22:42
Original
1887 Leute haben es durchsucht

docopt ist ein Tool zum Parsen von Befehlszeilenparametern. Wenn Sie Parameter an ein Python-Programm anhängen möchten, müssen Sie sich darüber keine Gedanken mehr machen. Der folgende Artikel stellt hauptsächlich die relevanten Informationen zu docopt vor, dem Befehlszeilenparameter-Parsing-Tool in Python. Freunde, die es benötigen, können einen Blick darauf werfen.

Vorwort

docopt ist eine Open-Source-Bibliothek. Es wurde ausführlich in der README-Datei vorgestellt und enthält auch viele Beispiele zum Lernen. Dieser Artikel übersetzt auch den Inhalt der README-Datei...

Das größte Merkmal von docopt ist, dass Sie es nicht haben Sie müssen sich keine Gedanken darüber machen, wie die Befehlszeilenparameter analysiert werden, aber wenn Sie das gewünschte Format gemäß bestimmten Regeln schreiben, ist die Analyse abgeschlossen.

docopt-Installation

docopt hat viele Versionen, von denen jede verschiedene Sprachen unterstützt, docopt unterstützt Java-Skripte. und docopts unterstützt Shell-Skripte (die folgenden Beispiele verwenden hauptsächlich docopts als Beispiel). Weitere Informationen finden Sie in den docopt-Anweisungen von Github als Beispiel für die Installation. Bevor Sie docopts installieren, müssen Sie zuerst docopt installieren.

Methode eins Die einfachere Methode ist die direkte Installation mit pip,

Einige Macs unterstützen den direkten pip-Befehl möglicherweise nicht. Sie müssen zuerst pip installieren

Methode 2

pip install docopt==0.6.2Sie können den Quellcode auch auf Github herunterladen (docopt ist ein Open Quellprojekt) und verwenden Sie dann

Installieren

Docopts installieren

Um docopts zu installieren, müssen Sie die oben beschriebene Methode verwenden. Laden Sie den Quellcode auf GitHub herunter und verwenden Sie ihn dann Python, um es zu installieren.

python setup.py install

Eine einfache Analyse der Implementierung von docopt

Es gibt ein solches Attribut in Python , sein Wert ist eine Zeichenfolge, die im Allgemeinen Hilfeinformationen darstellt, und docopt nutzt dies aus. Ein Attribut ersetzt die Hilfeinformationen durch Anweisungen zum Parsen der Befehlszeilenparameter und analysiert sie dann. Nehmen wir zur Veranschaulichung ein Beispiel von docopt:

__doc__

Im obigen Codeausschnitt eine große Hilfe Informationen sind: Unsere Anweisungen zum Parsen von Befehlszeilenparametern rufen die Funktion docopt am Funktionseintrag zum Parsen auf. Die zurückgegebene Argumentvariable ist eine Lexikonvariable, die aufzeichnet, ob die Option ausgewählt ist, welchen Wert der Parameter hat und wann Das Programm startet über die Befehlszeile. Zur Laufzeit lernen wir die vom Benutzer eingegebenen Optionen und Parameterinformationen anhand der Datensätze der Argumentvariablen.

Das Schreiben von Anweisungen zum Parsen von Befehlszeilenparametern ist daher von entscheidender Bedeutung. Die Informationen zum Parsen von Befehlszeilen bestehen aus zwei Teilen, nämlich dem Format des Verwendungsmusters und dem Format der Optionsbeschreibung.

"""Naval Fate.
Usage:
 naval_fate.py ship new <name>...
 naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
 naval_fate.py ship shoot <x> <y>
 naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting]
 naval_fate.py (-h | --help)
 naval_fate.py --version
Options:
 -h --help  Show this screen.
 --version  Show version.
 --speed=<kn> Speed in knots [default: 10].
 --moored  Moored (anchored) mine.
 --drifting Drifting mine.
"""
from docopt import docopt
if __name__ == &#39;__main__&#39;:
 arguments = docopt(__doc__, version=&#39;Naval Fate 2.0&#39;)
 print(arguments)
Nach dem Login kopieren

Nutzungsmusterformat (Nutzungsmusterformat)

Das Verwendungsmuster beginnt mit der Verwendung: und endet mit einer Leerzeile, wie im gezeigt Das obige Code-Snippet beschreibt hauptsächlich das Format, in dem Benutzer Befehlszeilenparameter hinzufügen, dh das verwendete Format, und die Analyse erfolgt auch gemäß diesem Format. Jedes Verwendungsmuster enthält die folgenden Elemente:

* Parameter

Parameter sollten großgeschrieben oder in spitzen Klammern eingeschlossen werden <>.

* Optionen

Optionen beginnen mit einem Bindestrich – oder –. Das Format ist -o, wenn nur ein Buchstabe vorhanden ist, und --output, wenn mehr als ein Buchstabe vorhanden ist. Gleichzeitig können Sie auch mehrere Einzelbuchstabenoptionen kombinieren. -ovi entspricht -o, -v, -i. Optionen können auch Parameter haben. Vergessen Sie nicht, den Optionen zu diesem Zeitpunkt eine Beschreibung hinzuzufügen.

Das Folgende ist die Bedeutung einiger im Verwendungsmuster verwendeter Bezeichner, deren korrekte Verwendung die Analyseaufgabe besser abschließen kann:


* []

stellt optionale Elemente dar, die Elemente in eckigen Klammern sind optional

* ()

stellt die erforderlichen Elemente dar, die Elemente in Klammern Sie müssen eines haben, auch wenn Sie Wählen Sie eine von mehreren aus.

* |

Sich gegenseitig ausschließende Elemente, nur ein Element auf beiden Seiten der vertikalen Linie kann übrig bleiben

* ...

bedeutet, dass das Element wiederholt erscheinen kann und das endgültige Analyseergebnis eine Liste ist

* [Optionen]

Geben Sie bestimmte Optionen an eine bestimmte Aufgabe erledigen.


Optionsbeschreibungsformat

Optionsbeschreibung ist ebenfalls wichtig, insbesondere wenn die Option Parameter hat und sein muss Wenn ihr ein Standardwert zugewiesen wird . Es gibt zwei Formate zum Hinzufügen von Parametern zu Optionen:

Um eine Beschreibung für eine Option hinzuzufügen, verwenden Sie einfach zwei Leerzeichen, um die Option zu trennen und Beschreibung. Das ist es.

Wenn Sie einer Option einen Standardwert hinzufügen, fügen Sie ihn einfach nach der Auswahlbeschreibung hinzu. Das Format ist wie folgt [Standard: ]

-o FILE --output-FILE  # 不使用逗号,使用 = 符号
-i <file>, --input <file> # 使用逗号,不使用 = 符号
Nach dem Login kopieren

Wenn die Option wiederholt werden kann, ist ihr Wert

eine Liste. Wenn sie nicht wiederholt werden kann, ist ihr Wert eine Zeichenfolge.


--coefficient=K The K coefficient [default: 2.95]
--output=FILE Output file [default: test.txt]
--directory=DIR Some directory [default: ./]
Nach dem Login kopieren
Verwenden Sie

[default: ...]

, um die Verwendung des Musterformats und des Optionsbeschreibungsformats zu verstehen, und Sie können es anhand der angegebenen Beispiele besser verstehen. Der nächste Schritt besteht darin, die Eingabeinformationen abzurufen.

在前面提到arguments参数是一个字典类型,包含了用户输入的选项和参数信息,还是上面的代码段例子,假如我们从命令行运行的输入是


python3 test.py ship Guardian move 100 150 --speed=15
Nach dem Login kopieren

那么打印arguments参数如下:


{&#39;--drifting&#39;: False,
 &#39;--help&#39;: False,
 &#39;--moored&#39;: False,
 &#39;--speed&#39;: &#39;15&#39;,
 &#39;--version&#39;: False,
 &#39;<name>&#39;: [&#39;Guardian&#39;],
 &#39;<x>&#39;: &#39;100&#39;,
 &#39;<y>&#39;: &#39;150&#39;,
 &#39;mine&#39;: False,
 &#39;move&#39;: True,
 &#39;new&#39;: False,
 &#39;remove&#39;: False,
 &#39;set&#39;: False,
 &#39;ship&#39;: True,
 &#39;shoot&#39;: False}
Nach dem Login kopieren

从打印信息可以看到,对于选项,使用布尔型来表示用户是否输入了该选项,对于参数,则使用具体值来表述。

这样一来,程序就可以从arguments变量中得到下一步的操作了。若是用户什么参数都没输入,则打印Usage说明提示输入内容。

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Verwendung von docopt, dem Analysetool für Befehlszeilenparameter in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage