python docopt模块详解

docopt
用了这个家伙可以在命令行执行py文件时传递参数,例如 :python test.py --tread_num 10

1.安装

  1. 指定版本安装:pip install docopt==0.6.2
  2. 源码安装:python setup.py install,下载源码

2.快速入门

以用户管理为例子做一下测试。

示例代码:

"""UserManage
Usage:
  user_manage user (add|delete) (<name>) [<password>  --authority=<authority>]
  user_manage change_name <name>
  user_manage change_pwd <password>
  user_manage add_description <description>...
  user_manage -h | --help
  user_manage --version

Options:
  -h --help     帮助.
  -v --version     查看版本号.
  --authority=<authority>  权限设置 [default: user].
  --group=<group>      分组
"""
from docopt import docopt

arguments = docopt(__doc__, version='UserManage 2.0')

if arguments.get("add"):
    print("添加用户成功")
elif arguments.get("delete"):
    print("删除用户成功")
elif arguments.get("change_name"):
    print("修改名字成功")
elif arguments.get("change_pwd"):
    print("修改密码成功")
elif arguments.get("add_description"):
    print("添加用户描述成功")

测试结果如下:
(这里写图片描述)

代码解读

作者很鸡贼,它解析py文件__doc__的返回值 。然后生成一个dict对象,比如上面实例代码在执行python test.py user add fireln 123456 --authority=admin后生成的dict对象就是:

{
'--authority': 'admin',
 '--help': False,
 '--version': False,
 '<description>': [],
 '<name>': 'fireln',
 '<password>': '123456',
 'add': True,
 'add_description': False,
 'change_name': False,
 'change_pwd': False,
 'delete': False,
 'user': True
 }

所以命令行所使用的命令都需要在py文件的说明文档里定义。在命令行执行时

定义命令行

命令行定义知道在哪里定义的了,下面来一起学习下怎么定义的吧。
定义命令行的两个部分分别是Usage和Options,下面具体介绍。

Usage

Usage是有自己的规则的,每一个Usage都可以包含如下元素,可参照user_manage user (add|delete) (<name>) [<password> --authority=<authority>]

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

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

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

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

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

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


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

  • [options]
    指定特定的选项,完成特定的任务。

Options

Options里面主要是对Usage中定义的选项和参数进行描述或赋初值。
例如示例中的--authority=<authority> 权限设置 [default: user].default就是用来赋初值的

参考文章

http://www.jb51.net/article/109598.htm

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值