click option/argument参数详解(click.option()和click.argument())
click通过click.command()装饰函数,使之成为命令行接口;通过click.option()装饰函数,为其约束并添加命令行选项和参数。简化了传统加参的方式,减少了开发者编写的代码量,使命令行工具编写起来快速而有趣。
新建一个名为adduser.py的Python文件,寥寥几行代码已经实现了一个完整命令行工具。
import click@click.command()
@click.option("--name",required=True)
def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()
首先定义了一个add()函数,通过click.command()将add()函数装饰成一个命令接口,这样可以直接在命令行上通过“python 文件名.py ”的形式直接调用add()函数,再通过click.option()为add()函数添加选项“--name”,此选项即可通过命令行输入的形式传给add()函数。
一、click.option中参数的修饰字段汇总
1.required
click.option()函数中有个required字段,当required=True时表示这个选项在命令行输入参数时必须带上,否则会报错。当required=False时,表示此参数可带可不带。
如果将required=False,则命令是可以执行成功的。
import click@click.command()
@click.option('-n',"--name",required=False)
def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()
click.option()还有许多其他参数字段,用来限制或者扩展选项,以满足开发者的需要。
2.default
为当前的选项添加default值。即使此时required=True,命令行也可以不输入参数值,如果命令行不输入参数值表示此时输入的是默认值。
import click@click.command()
@click.option("--name",required=True,default="golden")
def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()
3.nargs
指定命令行参数接收的值的个数,等于-1表示接受参数不限
import click@click.command()
@click.option("--name",required=True,nargs=2)
def add(name):print(name)click.echo(f"add user {name}")if __name__ == "__main__":add()
4.type
指定输入选项对应的参数的数据类型,未指定时默认是str字符串类型。
import click@click.command()
@click.option("--name",required=True)
#@click.option("--name",required=True,type=str) #等同于上一句
def add(name):print(type(name)) #打印输入参数name的数据类型click.echo(f"add user {name}")if __name__ == "__main__":add()
4.1 type字段对应的数据类型
str / click.STRING | 表示字符串类型,这也是默认类型 |
int / click.INT | 表示整型 |
float / click.FLOAT | 表示浮点型 |
bool / click.BOOL | 表示布尔型。对于 1、yes、y 和 true 会转化为 True;0、no、n 和 false 会转化为 False |
click.UUID | 表示 UUID,会自动将参数转换为 uuid.UUID 对象 |
click.FILE | 表示文件,会自动将参数转换为文件对象,并在命令行结束时自动关闭文件 |
click.PATH | 表示路径 |
click.IntRange | 表示范围选项 |
click.Choice |
限定参数值 @click.option('-c',required=True,type=click.Choice(['start','stop'])) |
5.multiple
multiple=True,使用多个相同地位选项分别指定值
import click@click.command()
@click.option("-N","-n","--name",required=True,type=str,multiple=True)
def add(name):print(name)click.echo(f"add user {name}")if __name__ == "__main__":add()
三个选项地位相同,使用的时候可以三选一,可以解决某些要求选项不区分大小写的情况。输入的参数值是以元组的形式传入函数中。
6.prompt
当在命令行中没有输入相应的参数时,会根据 prompt 提示用户输入。一般用于密码验证。prompt=True表示接受用户输入,hide_input=True表示隐藏输入的内容,confirmation_prompt=True表示再次确认输入的内容。当然也可以直接在命令行中输入。
import click@click.command()
@click.option("--name",required=True,type=str)
@click.option("--password", prompt=True, hide_input=True, confirmation_prompt=True)
#@click.password_option() #作用同上句一样,是click对上句的封装
def add(name,password):print(name,password)click.echo(f"add user {name}")if __name__ == "__main__":add()
7.is_eager、is_eager、callback,is_flag
Click 提供 eager 标识对参数名进行标识,如果输入该参数,则会拦截既定的命令行执行流程,跳转去执行一个回调函数。
is_eager=True 表明该命令行选项优先级高于其他选项;
expose_value=False 表示如果没有输入该命令行选项时,会执行既定的命令行流程;
callback=函数名 指定了输入该命令行选项时,要跳转执行的函数;
is_flag=True 表明参数值可以省略。
这四个修饰字段一般会同时使用。
import clickdef print_version(ctx, param, value):print("this program version : 0.1")exit()@click.command()
@click.option("--name",required=True,type=str)
@click.option("--version",is_eager=True,expose_value=False,callback=print_version,is_flag=True)
def add(name):print(name)click.echo(f"add user {name}")if __name__ == "__main__":add()
is_eager=True表示--version的优先级高于其他选项比如--name,当命令行同时出现这两个参数时,会优先执行--version。
is_flag=True表示该选项的参数值可以省略,就算加上也没有意义
expose_value=False表示命令行中没有出现--version选项时,会执行click既定的命令流程
callback=print_version,表示当命令行中出现--version时,不在执行click既定的命令流程,转而执行print_version()函数。
二、click.argument()
click.argument()比click.option()用法简单很多,也是用来修饰函数为其添加参数的。不同的是argument()只是添加参数,不添加选项。上面option()中用到的修饰字段也可以用于argument()。
import click@click.command()
#@click.option("--name",required=True,type=str)
@click.argument("name")
def add(name):click.echo(f"add user {name}")if __name__ == "__main__":add()
click option/argument参数详解(click.option()和click.argument())相关推荐
- Python 命令行参数详解
Python 命令行参数详解 0. 命令行参数 1. sys.argv 2. getopt 2.1 getopt.getopt 方法 2.2 Exception getopt.GetoptError ...
- LNMP nginx1.4.6+php5.5.11+mysql5.6.17+mecache+opcache编译安装+opcache参数详解+opcache可视化php页面代码
可能要用到的软件: libiconv-1.13.tar.gz libmcrypt-2.5.8.tar.gz mcrypt-2.6.8.tar.gz mhash-0.9.9.9.tar.gz m ...
- Nginx内置变量以及日志格式变量参数详解
Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有 ...
- 04_Flink-HA高可用、Standalone集群模式、Flink-Standalone集群重要参数详解、集群节点重启及扩容、启动组件、Flink on Yarn、启动命令等
1.4.Flink集群安装部署standalone+yarn 1.4.1.Standalone集群模式 1.4.2.Flink-Standalone集群重要参数详解 1.4.3.集群节点重启及扩容 1 ...
- Linux平台Makefile文件的编写基础篇和GCC参数详解
问:gcc中的-I.是什么意思....看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/incl ...
- Linux 之 编译器 gcc/g++参数详解
2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g+ ...
- rsync的介绍及参数详解,配置步骤,工作模式介绍
rsync的介绍及参数详解,配置步骤,工作模式介绍 rsync是类unix系统下的数据镜像备份工具.它是快速增量备份.全量备份工具. Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主 ...
- [转帖]Ipvsadm参数详解(常用命令)
Ipvsadm参数详解(常用命令) 2013年11月29日 12:41:40 怀素1980 阅读数:15901 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...
- PHP curl 参数详解
PHP curl参数详解,分享一下. curl_setopt (PHP 4 >= 4.0.2) curl_setopt -- 为CURL调用设置一个选项 描述 bool curl_setopt ...
- g++编译命令使用以及参数详解
gcc & g++现在是gnu中最主要和最流行的c & c++编译器 . g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c.这时候命令换做gcc即可.其实是无关紧要的. ...
最新文章
- linux下常用命令之nc
- IntelliJ-将Java项目/模块转换为Maven项目/模块
- 如何系统的自学python 知乎-如何系统地自学 Python?
- 个人永久性免费-Excel催化剂功能第26波-正确的Excel密码管理之道
- jquery - 正则表达式
- Java多线程基础总结
- 联想G480黑苹果试玩纪录
- nds android7.0模拟器,NDS用MD模拟器jEnesisDS 0.7
- SAA7113视频解码芯片介绍
- [Azure] 取消 或 删除Azure云订阅服务
- 3❤️Jenkins从零到壹❤️ :常用功能大全(JAVA 小虚竹)
- 【爬虫实战】01利用python爬虫并进行数据分析(链家 爬虫)
- STM32CubeMX新建工程+基本IO配置过程
- 批量压缩图片大小 – Caesium简体中文
- 重新连接 到 时出错 Microsoft Windows Network:本地设备名已在使用中
- python教育学_我去过书声琅琅教育学Python,没想到却跟想象的不一样!
- 正则表达式的介绍及应用
- 开发落网电台windows phone 8应用的计划(4)
- 跨浏览器书签同步(Floccus + WebDav)
- surrogate function
热门文章
- (二十三)用几何布朗运动模拟股价走势
- 2017-2018 年终总结
- stl源码 vector不正规解析2 (自用)VS2019
- php path_info orig_path_info
- jar包打包成exe安装包
- 计算机专业夏令营英语面试范文,夏令营英语面试自我介绍
- python operator.add_Python模块:operator简单介绍
- 注册表编辑已经被您的系统管理员停用
- edm java_EDM推送
- Busting Frame Busting: a Study of Clickjacking Vulnerabilities on Popular Sites