首页 后端开发 Python教程 使用Python中的命令行参数解析工具之docopt详细介绍

使用Python中的命令行参数解析工具之docopt详细介绍

Mar 28, 2017 am 09:22 AM
docopt python

docopt 是一个用来解析命令行参数的工具,当想要在 Python 程序后面附加参数时,就不需要再为此而发愁了。下面这篇文章主要介绍了Python中命令行参数解析工具之docopt的相关资料,介绍的非常详细,需要的朋友们下面来一起看看吧。

前言

docopt 是一个开源的库。它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容……

docopt 最大的特点在于不用考虑如何解析命令行参数,而是当你把心中想要的格式按照一定的规则写出来后,解析也就完成了。

docopt的安装

docopt有很多种版本,分别支持不同的语言,最简答的docopt支持python脚本,docopt.java支持java脚本,docopts则是支持shell脚本的(下面的例子主要以docopts为例),具体的可以参见github的docopt说明

安装docopt

以mac os x为例安装,安装docopts前首先需要安装docopt,有两种安装方法

方法一

比较简单的方法是直接用 pip 安装, pip 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:开始,以空行结束,如上代码段所示,它主要描述了用户添加命令行参数时的格式,也就是使用时的格式,解析也是按照此格式来进行的。

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

* 参数

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

* 选项

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

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

* []

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

* ()

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

* |

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

* ...

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

* [options]

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

选项描述格式(Option description format)

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

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


-o FILE --output-FILE  # 不使用逗号,使用 = 符号
-i <file>, --input <file> # 使用逗号,不使用 = 符号
登录后复制

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

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


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

如果选项是可以重复的,那么它的值[default: ...]将会一个 list列表,若不可以重复,则它的值是一个字符串。

使用

理解了 使用模式格式 和 选项描述格式 之后,再配合给出的例子就能较好的理解了。

接下来就是得到输入的信息了。

在前面提到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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

sublime怎么运行代码python sublime怎么运行代码python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中运行 Python 代码,需先安装 Python 插件,再创建 .py 文件并编写代码,最后按 Ctrl B 运行代码,输出会在控制台中显示。

vscode在哪写代码 vscode在哪写代码 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中编写代码简单易行,只需安装 VSCode、创建项目、选择语言、创建文件、编写代码、保存并运行即可。VSCode 的优点包括跨平台、免费开源、强大功能、扩展丰富,以及轻量快速。

Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

notepad 怎么运行python notepad 怎么运行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。

See all articles