Click(Command Line Creation Kit)是一个广受欢迎的第三方 Python 库,用于编写结构化、优雅且易扩展的命令行程序。

与内置库 argparse 相比,它提供了更简洁的装饰器语法、更强的可组合性以及更加友好的用户体验。

Click 的目标是,在保持复杂命令行能力的同时,让开发过程尽可能简单。

安装 :

pip install click

常见应用场景:

(1)快速构建命令行工具(CLI)

用简单的装饰器就能创建带参数与选项的命令。

(2)多级命令体系(子命令)

适合构建复杂的工具,如 git、docker 一样的命令层级结构。

(3)强类型输入与验证

Click 自动处理参数验证、类型转换、错误提示。

(4)增强用户体验

内置颜色、格式化输出、进度条、确认提示等功能。

(5)跨平台友好

包括 Windows、Linux、macOS 均表现稳定。

◆ ◆

核心概念

1、命令(Command)

使用 @click.command() 装饰器声明一个命令行入口函数。

2、参数(Argument)

位置参数,用户必须输入,例如:

mycli filename.txt

由 @click.argument() 定义。

3、选项(Option)

带 --name(或 -n)的可选参数,如:

mycli --verbose

由 @click.option() 定义。

4、命令组(Group)

支持多命令结构,通过 @click.group() 构建子命令系统。

5、上下文对象(Context)

Click 提供 ctx 对象传递共享信息(如配置、状态)。

6、Rich UI 辅助工具

如:

• click.echo():安全的终端输出

• click.secho():带色彩输出

• click.progressbar():进度条

• click.confirm():确认提示

◆ ◆

应用举例

例 1: 最简单的命令行程序

    hello()

运行:

python app.py

输出:

Hello, Click!

例 2:带参数与选项的命令

    greet()

使用演示:

python app.py Alice --upper

例 3:多级命令(Group)

    cli()

运行:

python app.py stop

例 4:进度条示例

    download()

例 5: 确认提示 + 彩色输出

    remove()

◆ ◆

常用函数与类速览

@click.command()

声明一个命令行函数。

参数:无(可带 kwargs,如 name)。

返回:装饰后的可调用对象。

@click.group()

声明一个命令组,用于组织多个子命令。

返回:Group 对象。

@click.argument(name, type=str)

定义命令的位置参数。

参数

name:参数名。

type:参数类型(默认字符串)。

返回:无(装饰器效果)。

@click.option(name, ... )

定义命令的选项参数。

参数(常用):

--name / -n:选项名称。

type:数据类型。

default:默认值。

is_flag:布尔开关选项。

返回:无(装饰器效果)。

click.echo(text, nl=True)

安全输出文本(优于 print())。

参数

text:输出内容。

nl:是否自动换行(默认 True)。

返回:无。

click.secho(text, fg=None, bg=None, bold=False)

带颜色的终端输出。

参数

text:输出内容。

fg:前景色。

bg:背景色。

bold:是否加粗。

返回:无。

click.confirm(text, default=False)

显示确认提示(yes/no)。

参数

text:提示内容。

default:默认选择。

返回:True 或 False。

click.progressbar(iterable, ...)

创建进度条。

参数

iterable:可迭代对象。

label:标签文字。

返回:进度条对象,可用于 with。

click.Context

Click 的上下文对象,用于存储共享状态。

常用属性:

obj:用户自定义对象

params:命令参数

返回:Context 实例。

◆ ◆

补充说明

(1)Click 的设计理念:简单优先(Composable)。

(2)支持自动生成 --help 文档。

(3)支持命令链、多命令脚手架、shell 自动补全等高级特性。

(4)与 Typer(Click 的高级封装)兼容性良好。

(4)在许多知名 CLI 工具(Flask、pipenv、aws-cli 第三方工具)中广泛使用。

小结

Click 是一个强大、优雅且可扩展的命令行构建工具。它比内置 argparse 更友好,比手写 CLI 更安全,也比大型 CLI 框架更轻量。

它让你能够:

用最少代码构建专业的命令行工具

使用装饰器编写清晰的命令结构

通过扩展与子命令构建复杂系统

提供更好的用户体验(颜色、进度条、确认提示等)

如果你需要编写 Python 的 CLI 工具,Click 几乎是首选方案。

打开网易新闻 查看精彩图片

点赞有美意,赞赏是鼓励