Click:超好用的命令行界面实现工具

click 是一个简洁好用的python模块,它能用尽量少的代码实现漂亮的命令行界面。它不仅开箱即用、还能支持高度自定义的配置。
一个简单的示例如下:
import click@click.command()@click.option('--count', default=1, help='number of greetings.')@click.option('--name', prompt='your name', help='the person to greet.')def hello(count, name): simple program that greets name for a total of count times. for x in range(count): click.echo(fhello {name}!)if __name__ == '__main__': hello()效果如下:
可见这个模块的强大之处,你只需要在对应的函数上加几个装饰器,就能实现带提示符的命令行界面的创建,相当方便。
1.准备
开始之前,你要确保python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细python安装指南 进行安装。
**(可选1) **如果你用python的目的是数据分析,可以直接安装anaconda:python数据分析与挖掘好帮手—anaconda,它内置了python和pip.
**(可选2) **此外,推荐大家用vscode编辑器,它有许多的优点:python 编程的最好搭档—vscode 详细指南。
请选择以下任一种方式输入命令安装依赖 :
windows 环境 打开 cmd (开始-运行-cmd)。macos 环境 打开 terminal (command+空格输入terminal)。如果你用的是 vscode编辑器 或 pycharm,可以直接使用界面下方的terminal.pip install click2.基本使用
如文首所示的例子一样,@click.option 是最基本的选项,它既可以设定参数默认值,也可以设定必须传入参数:
@click.command()@click.option('--n', default=1) # 设定了默认值def dots(n): click.echo('.' * n) @click.command()@click.option('--n', required=true, type=int) # 设定必须传入参数值def dots(n): click.echo('.' * n)如果你设置了必须传入相关参数,那么在没传入参数的情况下,效果是这样的:
当然,它还支持设定多种参数别名,比如下面的 --from 和 -f 是等效的:
@click.command()@click.option('--from', '-f', 'from_')@click.option('--to', '-t')def reserved_param_name(from_, to): click.echo(ffrom {from_} to {to})3.多值参数
如果你的选项需要多个参数,click也能帮你实现这个需求。
@click.command()@click.option('--pos', nargs=2, type=float)def findme(pos): a, b = pos click.echo(f{a} / {b})可见,通过配置nargs参数,你可以将用户传递的值存入元组,并在代码中解包这个元组拿到所有的值。
效果如下:
你还可以配置一个参数叫 multiple,这个参数可以让你接受n个值:
@click.command()@click.option('--message', '-m', multiple=true)def commit(message): click.echo(' '.join(message))
4.其他功能
你还可以使用click来计数,这个使用非常罕见:
@click.command()@click.option('-v', '--verbose', count=true)def log(verbose): click.echo(fverbosity: {verbose})效果如下:
布尔标志
此外,click还带有布尔标志功能,你可以直接使用 / 来标志参数为二选一参数,函数中直接就会拿到布尔型的变量:
import sys@click.command()@click.option('--shout/--no-shout', default=false)def info(shout): rv = sys.platform if shout: rv = rv.upper() + '!!!!111' click.echo(rv)
选择选项
你可以直接限定用户的输入范围:
@click.command()@click.option('--hash-type', type=click.choice(['md5', 'sha1'], case_sensitive=false))def digest(hash_type): click.echo(hash_type)
提示文本
在文首提到的例子中,输出了个 you name: 的提示,其实是 option 中的prompt参数控制的:
@click.command()@click.option('--name', prompt='your name please')def hello(name): click.echo(fhello {name}!)
好了,click的功能就介绍到这里,他还有许多高级的用法,比如动态默认值、回调函数等等。

光通信企业:5G时代,双千兆带来新机遇,多元化加速全球产业布局
一文看懂70年的人工智能简史
赛微电子:控股子公司MEMS超高频器件启动量产
Sonos首款支持蓝牙连接的便携式音响设备曝光
最新资讯 | 日本PSE认证安全最新版J62368-1(2023)标准已发布
Click:超好用的命令行界面实现工具
MWC 2016新机齐发 台IC设计业者静待急单
详解工业级光模块与工业级交换机的分类及应用
静态柔性PCB的制造注意事项
欧菲光发布可变光圈摄像头模组 可实现单颗模组任意光圈的切换
固态电池最新进展!又一巨头官宣!
中俄联合研制的CR929远程宽体客机正式亮相莫斯科航展
百国百业联手深速达智能 为数字农业插上智慧翅膀
千兆以太网传输速率_千兆以太网物理层标准
什么是数字孪生它的作用是什么
三星商店确认Galaxy S21系列1月14日全球上市
研华工控机:模块化无风扇工控机,高度灵活、适应性强
ZiiLABS推出全球首款1080p蓝光品质掌上型应用媒体处
如何在PROTEL 2004中建立个性模板
关于用跳跃—扩散模型估算市场隐含价值的分析和介绍