使用的命令行参数解释器是 ,用下来感觉非常棒,所以决定介绍一下这个库。( )
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:
后的第一个字母将会被识别为这个程序的名字,所有命令组合的每一个部分(空格分隔)都会成为字典中的一个 key。
- usage
形如
或者
- <argument>
的文本将会被识别为参数。
- ARGUMENT
在转化后的字典中的取值为
或者
- True
。
- False
- Usage: my_program <host> <port>
形如
或者
- -o
的文本将会被识别为选项。
- --option
在转化后的字典中的取值为
或者
- True
。
- False
- Usage: my_program -f
Tips:
等价于
- -abc
- -a -b -c
或者空格来分隔,
- =
等价于
- --input=ARG
- --input ARG
等价于
- -f FILE
- -fFILE
其他不满足
或者
- --options
的文本将会被识别为(子)命令。
- <arguments>
在转化后的字典中取值为
或者
- True
。
- False
形如
的文本是可选项。
- [optional elements]
包括上述的三种类型:参数,选项以及命令。
- elements
在相同或者不同的括号中都是一样的:
- Usage: my_program [command --option ]
等价于
- Usage: my_program [command] [--option] []
形如
的文本是必填项。
- (required elements)
上述三种元素默认都是必填项,
符号用在一些比较特殊的情形下,比如:
- ()
- Usage: my_program (--either-this <and-that> | <or-this>)
形如
的文本是选择项,你可以从中选择一个值。
- element|another
- Usage: my_program go (--up | --down | --left | --right)
形如
的文本是列表项,你可以输入多个参数。
- element...
比如说:
- Usage: my_program open ...
然后你可以通过
来访问这个列表。
- arguments['<file>']
部分用于指定某些特殊情形,比如:
- Option
- -i <file>, --input <file>
- --coefficient=K The K coefficient [default: 2.95]
来源: http://www.bubuko.com/infodetail-1947935.html