在Python笔记:命令行参数解析中介绍了sys.argv、getopt 和 argparse三种命令行参数解析方法,今天来分享另外一个python命令行工具click,使用起来比较简单,它是用来支持 Web开发框架 Flask的,都由Pallets 项目组织开发。
click相比于其他命令行工具的一个优势就是支持多个命令的嵌套和组合,主要包含以下特性:(摘自:为什么用 Click?)
下面使用click来实现文章Python笔记:命令行参数解析中的命令行,可以对比一下它们的差异。
import click
@click.command()
@click.option('--field', '-f', help='字段', multiple=True)
# @click.option('--display-filter', '-Y', prompt='display-filter', nargs=2, help='条件')
@click.option('--display-filter', '-Y', prompt='display-filter', type=(str, int, float, bool), help='条件')
@click.option('--count', '-c', default=2, prompt='count', help='条件')
def cli(field, display_filter,count):
"""Simple program that greets NAME for a total of COUNT times."""
click.echo(f'{field} {display_filter} {count}')
if __name__ == '__main__':
cli()
可以看到,click使用装饰器@click.command()将cli()方法包装成 click 对象,然后使用@click.option来添加选项参数,下面来介绍这些参数的含义。
默认第一个参数为长选项,help
参数用于设置选项的描述信息:
$ python3 test_click.py --help
Usage: test_click.py [OPTIONS]
Simple program that greets NAME for a total of COUNT times.
Options:
-f, --field TEXT 字段
-Y, --display-filter <TEXT INTEGER FLOAT BOOLEAN>...
条件
-c, --count 计数
--help Show this message and exit.
也可以使用help_option方法修改help选项显示信息:
@click.help_option('--help', '-h', help='帮助信息')
default
参数:设置选项默认值
type
:设置参数类型
prompt
:设置提示信息,设置prompt=true
或者prompt=提示信息
后,如果没有设置参数,会出现提示,默认关闭。
1、选项可以设置多个值,可以通过两种方式:
通过 nargs
参数来配置。多个值将被放入一个元组(tuple)中,只支持固定数量的参数。
使用type
参数设置不同类型的值:type=(str, int, float, bool)
2、multiple=True
允许多个选项赋值:
一个参数传递多次,并且记录每次的值
$ python3 test_click.py -f tcp -f udp -Y ip.version==4 -c 1
('tcp', 'udp') ip.version==4 1
Click 支持隐藏输入信息和确认,比如输入密码时隐藏内容,也可以直接用 password_option()
装饰器:
import click
@click.command()
@click.option('--password', '-p', prompt=True, hide_input=True, confirmation_prompt=True)
# @click.password_option('--password', '-p', prompt=True, hide_input=True, confirmation_prompt=True)
def cli(password):
click.echo(f'the password is {password}')
if __name__ == '__main__':
cli()
执行:
$ python test_click.py
Password:
Repeat for confirmation:
the password is 123456
$ python test_click.py -p 123456
the password is 123456
Click相比argparse使用起来更加简洁,可以实现快速构建命令行程序,当然在扩展性上就没有argparse库好。本文只介绍了click的部分功能,更详细的用法可参考:
1. VSCode + Python环境配置
2. Python PEP—Python增强提案
3. 正则表达式介绍及Python使用方法
4. Python笔记:List相关操作
5. Python笔记:字符串操作
6. Python函数的参数类型
7. Python反射介绍
8. Python笔记:属性值设置和判断变量是否存在
9. Python中的__new__、__init__以及metaclass
10. Python对象及内存管理机制
11. Python内存驻留机制
12. Python笔记:Python装饰器
13. Python中的闭包
14. Python笔记:lambda匿名函数
15. Python多线程与多进程
16. Python协程
17. Python笔记:日期时间获取与转换
18. Python笔记:命令行参数解析
19. Python 命令行参数解析之 Click
20. Python json文件读写
21. Python yaml文件读写
22. Python Scapy 报文构造和解析
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!