网站首页 > 技术文章 正文
导读:本文介绍命令行库Click的基本使用方法,约1800字,正常读完需要12~15分钟。
功能
Click是一个Python"命令行接口创建工具包",通过Click .command()修饰函数,可以将其变成click命令行工具。
安装
conda install -c conda-forge click
或pip install click
示例:
1. 单函数
这里的click.echo()可以理解为print()
2. 多函数
Commands可以附加到Group上,以实现同时将多个函数转为命令行工具
3. 添加参数
可以通过option()和argument()两种方式添加命令行参数,参考下面这个示例:
可以简单理解为:option()传递可选参数;argument()传递位置参数。
常用参数选项详解
1. option()
a. 选项名称
@click.option('-s', '--string-to-echo', 'string'),-s为命令行短选项,'--string-to-echo'为命令行长选项,'string'为脚本内变量名。没有指定脚本内变量名,则优先使用命令行长选项。(注意,长选项中的-在脚本中会自动替换为_,即脚本中变量为string_to_echo)
b. 默认值设定
@click.option('--n', default=1)。
c. 变量类型
@click.option('--n', type=int) ,如果给定默认值,则变量的类型由默认值决定;如果没有给定默认值,也没有显示地指明类型,变量被识别为字符串。
d. 是否必须
@click.option('--n', required=True, type=int) ,required为真,则该变量必须在命令行给出
e. 在help信息中打印默认值
@click.option('--n', default=1, show_default=True)
f. 单个参数传入多个值
第一种方法:指定nargas=传递个数,@click.option('--pos', nargs=2, type=float),python example –pos 1 2将传入两个数,脚本中pos识别为元组(1.0, 2.0);
第二种方法:指定type为元组,@click.option('-- pos', type=(str, int))
第三种方法:重复命令行选项@click.option('--pos', multiple=True),python example.py --pos 1 --pos 2 (参考c,两个都识别为字符串)
g. 计数
@click.option('-v', '--verbose', count=True)。python example -vvv (脚本中verbose=3)
h. 布尔值
@click.option('--shout', is_flag=True)。出现—shout则脚本中shout变量为真,否则为假
i. 取值范围
字符串:type=click.Choice(['MD5', 'SHA1'], case_sensitive=False,不区分大小写
整数:type=click.IntRange(0, 20, clamp=True),clamp为真时,给定值超过范围则自定修改为最小值/最大值,为假则报错
浮点数:type=click. FloatRange (0, 20, clamp=True)
j. 获取环境变量
@click.option('--username', envvar='USERNAME') ,multiple=True可以获取多个值,linux上以:划分。(不推荐组合前缀组合那种方式)
2. argument()
a. 传递一个位置参数
@click.argument('filename')
b. 指定参数个数
@click.argument('src', nargs=2).nargs为-1表示接收所有参数
c. 文件参数
@click.argument('input', type=click.File('rb')) click.File()可以对文件进行一些处理,如判打开等;"-"可用于表示默认设备,即屏幕
d. 路径参数
@click.argument('filename', type=click.Path(exists=True))
e. 环境变量
@click.argument('src', envvar='SRC')
其他复杂操作请自行阅读官方文档。
最后,改写Argparse:一个具体案例教会你python命令行参数解析一文中的接口
拓展阅读:
猜你喜欢
- 2025-06-30 如何利用企业微信做一个免费发送微信消息的站点
- 2025-06-30 linux下远程管理命令-关机与重启(linux远程主机关闭连接)
- 2025-06-30 一款构建Python命令行应用的开源库
- 2025-06-30 如何阻止输入 Python 命令时打开 Microsoft 商店?
- 2025-06-30 Python中subprocess模块:轻松调用外部程序与命令
- 2025-06-30 Python 的退出命令:quit()、exit()、sys.exit() 和 os._exit()
- 2025-06-30 Argparse:一个具体案例教会你python命令行参数解析
- 2025-06-30 实现Python命令行操作的基本步骤(python在命令行下编写代码)
- 2025-06-30 Java & Python 康威生命游戏 - 命令行版
- 2025-06-30 分享7个 Python CLI 库,助您快速构建高效命令行应用程序
- 277℃Python短文,Python中的嵌套条件语句(六)
- 276℃python笔记:for循环嵌套。end=""的作用,图形打印
- 273℃PythonNet:实现Python与.Net代码相互调用!
- 268℃Python实现字符串小写转大写并写入文件
- 267℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 126℃原来2025是完美的平方年,一起探索六种平方的算吧
- 110℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 108℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 最近发表
-
- 假期苦短,我用Python!这有个自动回复拜年信息的小程序
- 第4天|16天搞定Python数据分析,图表,靓靓靓
- 60带源代码的Python项目之 08 使用 Python 生成 QR 码
- 用python3 实现生成二维码代码示例
- python批量生成二维码图片(python如何生成二维码)
- 使用python生成二维码(python生成二维码界面)
- Python制作二维码(python制作二维码小作业)
- Python 生成条形码、二维码 (Code 128、EAN-13、QR code等)
- python如何实现二维码的生成和识别
- Python 使用 JsonPath 完成接口自动化测试中参数关联和数据验证
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)