Click, 一个命令行解析的 Python 库
Click 是 Python 的一个命令行解析库,设计用于快速开发命令行工具。它具有直观的装饰器语法和强大的功能支持,使我们可以高效处理参数输入、自动生成帮助文档、支持多层级命令、参数验证等功能。
安装
pip install click -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
基本用法
import click
@click.group()
def cli():
"""命令行工具主入口"""
pass
@cli.group()
def user():
"""用户相关操作"""
pass
@cli.group()
def config():
"""配置相关操作"""
pass
@user.command()
@click.option('-n', '--name', type=str, required=True, help='用户名')
def create(name):
"""创建用户"""
click.echo(f'创建用户:{name}')
@user.command()
@click.option('-n', '--name', type=str, required=True, help='用户名')
def delete(name):
"""删除用户"""
click.echo(f'删除用户:{name}')
@config.command()
@click.option('-k', '--key', type=str, required=True, help='配置键')
@click.option('-v', '--value', type=str, required=True, help='配置值')
def set(key, value):
"""设置配置"""
click.echo(f'设置配置:{key}={value}')
@config.command()
@click.option('-k', '--key', type=str, required=True, help='配置键')
def get(key):
"""获取配置"""
click.echo(f'获取配置:{key}')
if __name__ == '__main__':
cli()
调试结果:

高级用法
- 设置
default参数,可以为选项指定默认值
@click.option('--name', default='默认值')
- 参数类型与输入验证
@click.option('--count', type=int,...)
- 处理命令行输入的多值参数 使用
multiple=True可以接受多个值,类似于列表输入
@click.option('--language', type=click.Choice(['en', 'zh']), multiple=True, default=['en'], help='语言选择(可多个)')
import click
@click.command()
@click.option('--name', '-n', multiple=True, help='要问候的人名(可多个)')
@click.option('--language', type=click.Choice(['en', 'zh']), multiple=True, default=['en'], help='语言选择(可多个)')
def greet(name, language):
greetings = {
'en': 'Hello',
'zh': '你好'
}
# 处理多个名字和语言
names = name if name else ['World']
languages = language if language else ['en']
for lang in languages:
for person in names:
msg = f"{greetings[lang]}, {person}"
msg = msg.upper() + '!'
click.echo(msg)
if __name__ == '__main__':
greet()
调试:python main.py -n Tom -n Admin --language en --language zh

文本增加颜色:
import click msg = "Hello, Word!" click.echo(click.style(msg, fg="red")) click.echo(click.style(msg, fg="blue")) click.echo(click.style(msg, fg=32)) click.echo(click.style(msg, fg="red", bg="blue", bold=True))


浙公网安备 33010602011771号