python参数解释器_docopt——好用的Python命令行参数解释器

Qingchat使用的命令行参数解释器是 docopt,用下来感觉非常棒,所以决定介绍一下这个库。( 奉劝各位看官,真爱生命,远离argparse。 )

介绍

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=K The K coefficient [default: 2.95]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值