docopt
用了这个家伙可以在命令行执行py文件时传递参数,例如 :python test.py --tread_num 10
##1.安装
指定版本安装:pip install docopt==0.6.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就是用来赋初值的
————————————————
版权声明:本文为CSDN博主「fireln_jiang」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16293649/article/details/80355637