一、快速上手:几行代码搞定基础命令

用 click 写一个简单的命令行程序特别简单,只需一个装饰器就能定义一个命令:

import click@click.command()
@click.option("--name", prompt="你的名字", help="输入你的名字")
def greet(name):click.echo(f"你好,{name}!")if __name__ == "__main__":greet()

运行这个程序,它会提示你输入名字,然后友好地打招呼。@click.command()把函数变成命令,@click.option()定义命令选项,还能自动生成帮助信息,输入--help就能看到详细说明,是不是很方便?

二、丰富的参数类型:轻松处理各种输入

click 支持多种参数类型,不用手动转换,比如整数、布尔值、文件等:

import click@click.command()
@click.option("--age", type=int, help="你的年龄")
@click.option("--student", is_flag=True, help="是否是学生")
@click.option("--log", type=click.File("w"), help="日志文件")
def info(age, student, log):if log:log.write(f"年龄:{age}\n是否学生:{student}\n")click.echo(f"年龄:{age},{'是' if student else '不是'}学生")if __name__ == "__main__":info()

type=int会自动把输入转换成整数,is_flag=True把选项变成开关(不需要值),type=click.File("w")直接帮你打开文件,省去了手动处理文件的麻烦。

三、命令组:给程序分分类

如果程序功能复杂,可以用命令组把相关命令组织起来,就像给工具分了文件夹:

import click@click.group()
def cli():pass@cli.command()
def start():click.echo("程序启动中...")@cli.command()
def stop():click.echo("程序停止中...")@cli.command()
@click.option("--message", help="要发送的消息")
def send(message):click.echo(f"发送消息:{message}")if __name__ == "__main__":cli()

运行后可以通过python 文件名.py start、python 文件名.py send --message "hello"来调用不同命令,结构清晰,用户用起来也一目了然。

四、进度条:让长时间操作更友好

处理耗时任务时,进度条能让用户知道程序在工作,click 的进度条功能很贴心:

import click
import time@click.command()
def process():with click.progressbar(range(100), label="处理中") as bar:for i in bar:time.sleep(0.05)  # 模拟处理过程click.echo("处理完成!")if __name__ == "__main__":process()

运行后会看到一个动态的进度条,显示处理进度,比干等要友好得多。

五、颜色和样式:让输出更醒目

click 还能给命令行输出加上颜色和样式,让重要信息更突出:

import click@click.command()
def show():click.secho("这是成功信息", fg="green")  # 绿色文字click.secho("这是警告信息", fg="yellow")  # 黄色文字click.secho("这是错误信息", fg="red", bold=True)  # 红色加粗文字if __name__ == "__main__":show()

fg设置文字颜色,bold设置加粗,让输出内容层次分明,一眼就能抓住重点。

总之,click 工具类用起来简单直观,却能做出专业级的命令行程序。无论是小脚本还是复杂工具,它都能帮你快速搭建出易用、美观的命令行界面。如果你经常写命令行程序,一定要试试 click,相信它会让你的工作效率大大提升!