深入浅析Python 命令行模块 Click
什么是 Click
Click 是一个 Python 的第三方包,可以帮助我们快速地创建命令行界面。它有几个显著的特点,比如自动帮助信息生成、约束参数类型、简单易用的语法等等。
安装 Click
安装 Click 很简单,可以使用 pip 命令来进行安装:
pip install click
Click 的基本使用
在使用 Click 之前,我们需要导入它。然后,通过定义装饰器的方式来添加多个命令以及子命令。
import click
@click.command()
def hello():
click.echo('Hello World!')
if __name__ == '__main__':
hello()
上面的代码意思是定义了一个命令 hello
,它的作用是输出一句话 "Hello World!"。
运行方式: python test.py
(test.py是脚本文件)
这个 hello
命令看起来很简单,让我们增加一些参数和选项。
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 outputs a greeting(s)"""
for _ in range(count):
click.echo(f'Hello, {name}!')
if __name__ == '__main__':
hello()
上面代码中,我们为 hello()
命令添加了两个选项: count
和 name
。其中, count
是一个整数,并且默认值为1;name
是一个必填的参数。此外,我们也添加了一个帮助文本。
运行方式: python test.py --count=3
输出:
Your name: Jack
Hello, Jack!
Hello, Jack!
Hello, Jack!
从上例中,我们可以看到如果没有输入 'count'
选项的值,程序将会按照默认值 1
运行。而如果没有输入 'name'
参数的值,程序将会提示输入。
Click 的子命令使用
有时候我们需要为一个命令甚至是子命令添加更多的功能和选项。这时候,我们可以使用 Click 提供的 group()
方法,来添加子命令。
import click
@click.group()
def cli():
pass
@cli.command()
@click.option('--myname', prompt='Your name', help='The person to say hello to.')
def hello(myname):
"""Says hello to the person with the given name."""
click.echo(f'Hello, {myname}!')
@cli.command()
@click.option('--n', default=1, help='Number of greetings.')
@click.argument('names', nargs=-1)
def hi(n, names):
"""Says hi to multiple people"""
for name in names:
for _ in range(n):
click.echo(f"Hi, {name}!")
if __name__ == '__main__':
cli()
上面代码中,我们使用 group()
方法来创建一个命令组 cli
。然后,按照之前的方法为每个子命令分别加入一些参数和输出。
运行方式:
python test.py
输出:
Usage: test.py [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
hello
hi
运行方式:
python test.py hello --myname=Jack
输出:
Your name: Jack
Hello, Jack!
运行方式:
python test.py hi --n=2 tom john
输出:
Hi, tom!
Hi, tom!
Hi, john!
Hi, john!
总结
Click 是 Python 的一个命令行模块,可以帮助我们更容易地实现命令行工具的开发。通过本文的介绍,我们可以初步掌握 Click 的一些基础使用技巧。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入浅析Python 命令行模块 Click - Python技术站