ホームページ >バックエンド開発 >Python チュートリアル >Python のコマンド ライン パラメーター解析ツールである docopt の使用方法の詳細な紹介
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__ == '__main__': arguments = docopt(__doc__, version='Naval Fate 2.0') 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: ...]
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: で始まり、空白行で終わります。主に、ユーザーがコマンド ライン パラメーターを追加するときの形式について説明します。 、つまりフォーマットを使用しており、分析もこのフォーマットに従って実行されます。 🎜🎜各使用パターンには次の要素が含まれます:
🎜
{'--drifting': False, '--help': False, '--moored': False, '--speed': '15', '--version': False, '<name>': ['Guardian'], '<x>': '100', '<y>': '150', 'mine': False, 'move': True, 'new': False, 'remove': False, 'set': False, 'ship': True, 'shoot': False}🎜 オプションの説明を追加するには、オプションと説明を 2 つのスペースで区切ります。 🎜🎜オプションにデフォルト値を追加する場合は、選択の説明の後に追加するだけです。形式は次のとおりです [default: 809c117b6283c5ca6a505e8118a92b6d]🎜
🎜 rrreee🎜オプションが繰り返し可能な場合、その値はリストになります。繰り返しできない場合、その値は文字列になります。 🎜🎜🎜🎜Use 🎜🎜🎜🎜使用パターンの形式とオプションの説明の形式を理解した後、示されている例を使用すると、よりよく理解できます。 🎜🎜次のステップは、入力された情報を取得することです。 🎜
在前面提到arguments参数是一个字典类型,包含了用户输入的选项和参数信息,还是上面的代码段例子,假如我们从命令行运行的输入是
python3 test.py ship Guardian move 100 150 --speed=15
那么打印arguments参数如下:
{'--drifting': False, '--help': False, '--moored': False, '--speed': '15', '--version': False, '<name>': ['Guardian'], '<x>': '100', '<y>': '150', 'mine': False, 'move': True, 'new': False, 'remove': False, 'set': False, 'ship': True, 'shoot': False}
从打印信息可以看到,对于选项,使用布尔型来表示用户是否输入了该选项,对于参数,则使用具体值来表述。
这样一来,程序就可以从arguments变量中得到下一步的操作了。若是用户什么参数都没输入,则打印Usage说明提示输入内容。
以上がPython のコマンド ライン パラメーター解析ツールである docopt の使用方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。