当前位置:首页>python>Python写命令行工具太爽了,这个库让交互变得简单

Python写命令行工具太爽了,这个库让交互变得简单

  • 2026-09-02 15:47:32
Python写命令行工具太爽了,这个库让交互变得简单

我写了几年Python,最头疼的是给脚本加交互功能。以前要么用input()一行行问,要么用argparse写一堆参数。input()太简陋,argparse参数一多记不住。直到我试了 click 这个库,感觉打开了新世界。

click用起来特别方便。装好之后,加一行 @click.command(),函数就变成命令行工具。加参数更简单,@click.option('--name') 就搞定。不需要自己解析参数,不会写错。

我举个真实例子。上周帮同事写个批量改文件名的工具。以前用argparse,要定义参数类型,加帮助信息,大概要写30行。用click,10行就搞定。

import click

@click.command()

@click.option('--path', prompt='文件夹路径', help='要处理的文件夹')

@click.option('--prefix', prompt='前缀', help='要加的前缀')

def rename_files(path, prefix):

    改文件名逻辑

   pass

if __name__ == '__main__':

   rename_files()

同事拿到后,直接在终端运行。程序自动弹出输入提示,问他文件夹路径和前缀。不用记参数名,不用看文档。他说“这比我写过的所有工具都好用”。

click最大的好处是交互自然。你可以加prompt让用户输入,可以加choice限制选项,可以加password隐藏输入。比如写个数据库迁移工具,输入密码时自动隐藏,用户感觉特别专业。

它还能让你不用再担心参数顺序。用argparse时,用户输错顺序会报错。click的option参数名就是标识符,你写 --name xxx --age yy 还是 --age yy --name xxx 都没问题。这对非程序员特别友好。

我有个朋友用这个库写了个下载工具。他用click的 @click.group() 实现了子命令。比如 down tool video 下载视频,down tool music 下载音乐。用户一看就明白,不用学额外知识。

click还有现成的progress bar。写下载脚本时,加一行 with click.progressbar(files) as bar,终端就显示进度条。用户能看到正在处理第几个文件,还剩多少。这比打印“处理中……”高大上得多。

我用click写过日志分析工具、配置管理脚本、自动化部署助手。每次写完,同事都说好用。他们不需要看代码,不需要记参数,跟着提示走就行。节省了大量教人使用的时间。

如果你还在用input()或argparse写命令行工具,建议试试click。装一次就记住:pip install click。然后你的脚本就能变成真正的交互式程序。用户愿意用,你也愿意写。

最新文章

随机文章