<强>什么是docopt ?
强>
1, docopt是一种Python编写的命令行执行脚本的交互语言。
它是一种语言!
它是一种语言!
它是一种语言!
2,使用这种语言可以在自己的脚本中,添加一些规则限制。这样脚本在执行的时候就必须按照这样格式来执行,同时,也可以很方便的编写一些帮助信息(其实很多软件在输入- h的时候显示信息,例如python - h,会显示所有的python指令,并且页通过docopt限制了python指令的格式)、下面是一些简单的例子:
<强> docopt的安装强>
docopt有很多把版本,分别支持不同的语言,最简单就是支持python语言,docopt。java支持java脚本,docopts则是支持shell脚本的(下面的例子主要事以docopts为例)
1,安装docopt
方法一:
pip安装docopt
方法二:
也可以在github上下载源码(docopt是开源项目),然后通过Python设置。py安装安装
2,安装docopts就必须使用上面的安装docopt的方法二来进行安装,然后使用python安装,下载地址:
https://github.com/docopt/docopts
docopt实现简单分析
在Python中有这么一个属性__doc__,它的值是字符串,一般表示帮助信息,而docopt正是利用了这一属性,把帮助信息替换成命令行参数解析说明,在对它进行解析即可:
举个例子:
”““海军的命运。 用法: naval_fate。py船新& lt; name>… naval_fate。py船& lt; name>移动& lt; x>& lt; y>(——速度=& lt; kn>) naval_fate。py船射击& lt; x>& lt; y> naval_fate。py矿(设置|删除)& lt; x>& lt; y>(——停泊|——漂流) naval_fate。py (- h |——帮助) naval_fate。py——版本 选项: - h——帮助显示该屏幕。 ——版本显示版本。 ——速度=& lt; kn>速度节(默认值:10)。 我——停泊停泊(固定)。 我——漂移漂移。 ”“” 从docopt进口docopt if __name__==癬_main__”: 参数=docopt (__doc__ version=昂>?.0”) 打印(参数)
上面代码中,很大一段帮助信息就是我们命令行参数解析说明,在函数入口调用了docopt函数进行解析,返回的参数变量是一个字典变量,它记录了选项是否被选用了,参数的值是什么等信息,当程序从命令行运行时,我们就是根据参数变量的记录来得知用户输入的选项和参数信息。
所以如何写好命令行参数解析说明就很重要了,命令行解析信息包含两部部分,分别是使用模式格式和选项描述格式。
<强>使用模式格式(使用模式格式)
强>
使用模式格式用法:开始,以空行结束,如上述代码显示,它主要描述了用户添加命令含参数的格式,也就是使用时的格式,解析也是按照此格式来进行的。
每一个使用模式都包含以下元素:
*参数
参数使用大写字母或者使用尖括号& lt;比;围起来
*选项
选项以短横线开始或者———只有一个字母时格式- o,多于一个字母时,输出,同时还可以把多个单字母的选选项合并,ov等同于o、v - i。
。选项也能参数,此时别忘了给选项添加描述说明
接下来时使用模式中用到的一些标识的含义,正确的使用他们能够更好的完成解析任务:
* []
代表可选的元素,方括号中的元素可有可无
* ()
代表必要有的元素,括号内的元素必须要有,哪怕时多个里面选一个
* |
互斥的元素,竖线两旁的元素只能有一个留下
* ....
代表元素可以重复出现,最后解释的结果时一个列表
*[选项]
指定特定的选项,完成特定的任务。
<强>选项描述格式(选项描述格式)强>
选项描述同样必不可少,尤其时方选项有参数,并且还需要为它赋默认值时。
为选项添加参数的格式有两种:
-
<李> - o - FILE #不文件,输出是用逗号,使用=符号李>
<李>我& lt; file>,输入& lt; file>#使用逗号,不使用=符号李>
为选项添加描述说明,只需要用两个空格分割选项和说明即可
为选项添加默认值时,把它添加到选择描述后面即可,格式如下【defailt: & lt; my-default-value>】