因由
上文(python命令行神器click介绍)描述了使用click创建python命令行程序的主要过程。在实际使用中还希望它有自动补齐的功能,毕竟命令行参数有哪些很难记住,能够自动提示和联想对得心应手的使用至关重要。所以本文讲述怎么使click命令具有自动补齐能力。
首先,不借助第3方工具,click本身是可以支持自动补齐的,在click详细文档(英文版)有一个章节有介绍。但是对于我这种菜鸟,也懒得折腾,就使用了一个开源的第三方库来搞定它,更方便一些。
第三方库地址:https://github.com/click-contrib/click-completion
它有很多自动补齐功能的增强,并且还支持更多的shell,可参考其readme.md文档。
过程
安装
git clone https://github.com/click-contrib/click-completion
cd click-completion
python3 setup.py install --user
配置过程
导入及初始化
import click_completion
click_completion.init()
配置安装命令
@completion.command()
def install():
"""Install the click-completion-command completion"""
shell, path = click_completion.install('bash')
click.echo('%s completion installed in %s' % (shell, path))
然后,你需要在shell下执行xx install命令,显示bash completion installed in /root/.bash_completion,你还需要source /root/.bash_completion,就生效了。
当然,这个是简化版的安装命令,详细的请参考Github上click-completion的示例。
效果
输入xx(你的命令行程序名),然后按两下Tab键,会提示子命令列表,子命令输入首字母,再按Tab键,会自动补齐,如果'xx -',在输入Tab键,会提示参数列表。