ホームページ >バックエンド開発 >Python チュートリアル >Python のコマンド ライン パラメーター解析ツールである docopt の使用方法の詳細な紹介

Python のコマンド ライン パラメーター解析ツールである docopt の使用方法の詳細な紹介

高洛峰
高洛峰オリジナル
2017-03-28 09:22:421931ブラウズ

docopt は、コマンド ライン パラメーターを解析するために使用されるツールです。Python プログラムにパラメーターを追加する場合は、もう心配する必要はありません。以下の記事では主に Python のコマンドラインパラメータ解析ツール docopt の関連情報を紹介しています。必要な方は以下を参照してください。

はじめに

docopt はオープンソース ライブラリです。 README で詳しく紹介されており、学習用の例も多数付属しています。この記事も README の内容を翻訳しています...

docopt の最大の特徴は、コマンドを解析する方法を考える必要がないことです。 lineパラメータですが、一定のルールに従って希望のフォーマットを書き出すと解析が完了します。

docopt のインストール

docopt には多くのバージョンがあり、それぞれが異なる言語をサポートしています。最も単純な docopt は Python スクリプトをサポートし、docopt.java は Java スクリプトをサポートし、docopts はシェル スクリプトをサポートします (以下の例は主に docopt を例にしています)。詳細については、github の docopt の説明を参照してください

docot のインストール

mac os を使用する より簡単な方法は、pip で直接インストールすることです、pip install docopt==0.6.2

一部の Mac は直接 pip 命令をサポートしていない場合があります。最初に pip をインストールする必要があります

方法 2pip install docopt==0.6.2

有些mac可能不支持直接pip 指令,需要先安装pip

方法二

也可以在github上下载源码(docopt是开源项目),然后通过python setup.py install 安装

安装docopts

安装docopts就必须使用上面安装docopt的方法二,在GitHub上下载源码,然后 使用python安装,下载地址

docopt 的实现简单分析

在 Python 中有这么一个属性 __doc__ ,它的值是字符串,一般表示帮助信息,而 docopt 正是利用了这一属性,把帮助信息替换成命令行参数解析说明,再对它进行解析即可。

举个 docopt 中的例子来说明:


"""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)

上述代码段中,很大一段帮助信息就是我们的命令行参数解析说明,在函数入口处调用docopt函数进行解析,返回的arguments变量是一个字典型变量,它记录了选项是否被选用了,参数的值是什么等信息,当程序从命令行运行时,我们就是根据arguments变量的记录来得知用户输入的选项和参数信息。

所以如何写好命令行参数解析说明就变得至关重要了,命令行解析信息包含两部分,分别是使用模式格式和选项描述格式。

使用模式格式(Usage pattern format)

使用模式以usage:开始,以空行结束,如上代码段所示,它主要描述了用户添加命令行参数时的格式,也就是使用时的格式,解析也是按照此格式来进行的。

每一个使用模式都包含如下元素:

* 参数

参数使用大写字母或者使用尖括号a8093152e673feb7aba1828c43532094围起来。

* 选项

选项以短横线开始-或者--。只有一个字母时格式-o,多于一个字母时--output。同时还可以把多个单字母的选项合并,-ovi等同于-o、-v、-i。选项也能有参数,此时别忘了给选项添加描述说明。

接下来是使用模式中用到的一些标识的含义,正确地使用他们能够更好的完成解析任务:

* []

代表可选的元素,方括号内的元素可有可无

* ()

代表必须要有的元素,括号内的元素必须要有,哪怕是多个里面选一个。

* |

互斥的元素,竖线两旁的元素只能有一个留下

* ...

代表元素可以重复出现,最后解析的结果是一个列表

* [options]

指定特定的选项,完成特定的任务。

选项描述格式(Option description format)

选项描述同样必不可少,尤其是当选项有参数,并且还需要为它赋默认值时。

为选项添加参数的格式有两种:


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

为选项添加描述说明,只需要用两个空格分隔选项和说明即可。

为选项添加默认值时,把它添加到选择描述后面即可,格式如下[default: 809c117b6283c5ca6a505e8118a92b6d]


--coefficient=K The K coefficient [default: 2.95]
--output=FILE Output file [default: test.txt]
--directory=DIR Some directory [default: ./]

如果选项是可以重复的,那么它的值[default: ...]

github にインストールすることもできます。ソース コード (docopt はオープン ソース プロジェクトです) をダウンロードし、python を通じてインストールします。 setup.py install

docopts をインストールするには docopt をインストールするには、上記の方法 2 を使用して docopt をインストールし、GitHub でソース コードをダウンロードしてから、Python を使用してインストールし、アドレスをダウンロードする必要があります

docopt の実装の簡単な分析

🎜🎜 Python __doc__ にはそのような属性があり、その値は一般にヘルプ情報を示す文字列であり、docopt はヘルプ情報を置き換えるために使用されますコマンドラインパラメータ解析命令を使用して、それを解析します。 🎜🎜🎜説明するために docopt の例を見てみましょう: 🎜🎜


🎜

python3 test.py ship Guardian move 100 150 --speed=15
🎜 上記のコード セグメントでは、大きなヘルプ情報はコマンド ライン パラメーターの解析命令です。関数 docopt 関数は、解析の入り口で呼び出されます。返される引数変数は、オプションが選択されているかどうか、パラメーターの値が何であるか、およびプログラムがコマンドから実行されたときのその他の情報を記録します。行では、ユーザーが入力したオプションとパラメータ情報を知るために、引数変数のレコードを使用します。 🎜🎜 したがって、コマンド ライン パラメーターの解析命令をどのように記述するかが非常に重要になります。コマンド ライン解析情報には、使用パターン形式とオプション記述形式の 2 つの部分が含まれます。 🎜🎜🎜🎜使用パターンの形式 (使用パターンの形式) 🎜🎜🎜🎜 使用パターンは、上記のコード スニペットに示すように、usage: で始まり、空白行で終わります。主に、ユーザーがコマンド ライン パラメーターを追加するときの形式について説明します。 、つまりフォーマットを使用しており、分析もこのフォーマットに従って実行されます。 🎜🎜各使用パターンには次の要素が含まれます:
🎜🎜* パラメータ
🎜🎜パラメータは大文字で記述するか、山かっこ a8093152e673feb7aba1828c43532094 で囲む必要があります。
🎜🎜* オプション
🎜🎜 オプションはダッシュ - または - で始まります。文字が 1 つだけの場合、形式は -o で、複数の文字がある場合は --output です。同時に、複数の 1 文字のオプションを組み合わせることもできます。-ovi は、-o、-v、-i と同等です。オプションにはパラメーターを含めることもできます。このとき、オプションに説明を追加することを忘れないでください。 🎜🎜使用パターンで使用されるいくつかの識別子の意味は次のとおりです。これらを正しく使用すると、解析タスクをより適切に完了できます。
🎜🎜* []
🎜🎜 は、括弧内の要素を表します。はオプションです
🎜🎜* ()
🎜🎜 は、複数の要素から 1 つを選択する場合でも、存在する必要がある要素を表します。
🎜🎜* |
🎜🎜相互に排他的な要素、垂直線の両側に 1 つの要素のみを残すことができます
🎜🎜* ...
🎜🎜 は、要素は繰り返すことができます。表示され、最終的な解析結果はリストです。
🎜🎜* [オプション]
🎜🎜特定のタスクを完了するには、特定のオプションを指定します。 🎜🎜🎜🎜オプションの説明の形式 🎜🎜🎜🎜オプションの説明も、特にオプションにパラメーターがあり、デフォルト値を割り当てる必要がある場合には必須です。 🎜🎜オプションにパラメータを追加するには 2 つの形式があります: 🎜


🎜

{&#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}
🎜 オプションの説明を追加するには、オプションと説明を 2 つのスペースで区切ります。 🎜🎜オプションにデフォルト値を追加する場合は、選択の説明の後に追加するだけです。形式は次のとおりです [default: 809c117b6283c5ca6a505e8118a92b6d]🎜


🎜 rrreee🎜オプションが繰り返し可能な場合、その値はリストになります。繰り返しできない場合、その値は文字列になります。 🎜🎜🎜🎜Use 🎜🎜🎜🎜使用パターンの形式とオプションの説明の形式を理解した後、示されている例を使用すると、よりよく理解できます。 🎜🎜次のステップは、入力された情報を取得することです。 🎜

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


python3 test.py ship Guardian move 100 150 --speed=15

那么打印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}

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

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

以上がPython のコマンド ライン パラメーター解析ツールである docopt の使用方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。