docopt——好用的Python命令行参数解释器
使用的命令行参数解释器是 ,用下来感觉非常棒,所以决定介绍一下这个库。( )
介绍
docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用""" 文档注释的形式写出符合要求的文档,就会自动生成对应的 parse,体验非常赞。
用法
样例
docopt 的使用非常简单,以 Qingchat 为例,你只需要在代码最开头加入:"""Qingchat CLI
Usage:
qingchat config ip
qingchat config port
qingchat config login
qingchat group list
qingchat group choose ...
qingchat group clean
qingchat group send -t
qingchat group send -i
qingchat group send -f []
Options:
-h --help Show this screen.
-v --version Show version.
"""
然后在执行代码中加入:arguments=docopt(__doc__,version='Qingchat 0.3.2')
就会在你的程序中导入一个arguments 字典,这个字典中的内容形如:{
'-f':False,
'-i':False,
'-t':False,
'':None,
'':None,
'':[],
'':'127.0.0.1',
'':None,
'':None,
'choose':False,
'clean':False,
'config':True,
'group':False,
'ip':True,
'list':False,
'login':False,
'port':False,
'send':False
}
这样应该就能很容易看出来,我们在文档中写的每一个短语,都被转化为一个对应的类型。只要直接调用arguments['xxx'] 就可以判断或者使用对应的值,从而实现对应的功能。
详解
前面我们举了一个例子,下面我们来详细介绍一下如何完成一个符合docopt 要求的注释文档。
Usage
所有出现在usage: (区分大小写)和一个空行之间的文本都会被识别为一个命令组合, usage 后的第一个字母将会被识别为这个程序的名字,所有命令组合的每一个部分(空格分隔)都会成为字典中的一个 key。
参数形如 或者 ARGUMENT 的文本将会被识别为参数。
在转化后的字典中的取值为True 或者 False 。Usage:my_program
选项形如-o 或者 --option 的文本将会被识别为选项。
在转化后的字典中的取值为True 或者 False 。Usage:my_program-f
Tips:短选项可以组合起来,比如-abc等价于-a-b-c
长选项需要的参数需要使用=或者空格来分隔,--input=ARG等价于--input ARG
短选项可以不需要空格,-f FILE等价于-fFILE
命令其他不满足--options 或者 的文本将会被识别为(子)命令。
在转化后的字典中取值为True 或者 False 。
可选项形如[optional elements] 的文本是可选项。
elements 包括上述的三种类型:参数,选项以及命令。
在相同或者不同的括号中都是一样的:Usage:my_program[command--option]
等价于Usage:my_program[command][--option][]
必填项形如(required elements) 的文本是必填项。
上述三种元素默认都是必填项,() 符号用在一些比较特殊的情形下,比如:Usage:my_program(--either-this|)
选择项
形如element|another 的文本是选择项,你可以从中选择一个值。Usage:my_program go(--up|--down|--left|--right)
列表项
形如element... 的文本是列表项,你可以输入多个参数。
比如说:Usage:my_program open...
然后你可以通过arguments[''] 来访问这个列表。
Option
Option 部分用于指定某些特殊情形,比如:将某个短参数与长参数关联起来,比如-i,--input
某个选项有一个参数
选项的默认值,比如--coefficient=KTheK coefficient[default:2.95]
来源: http://www.bubuko.com/infodetail-1947935.html