作者:Jackpop
链接:https://www.zhihu.com/question/24590883/answer/709395848
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
官方文档:https://click.palletsprojects.com/en/7.x/
Click的开发初衷就是使用最少的代码,以一种可组合的方式创建漂亮的命令行接口。它的目的是使编写命令行工具的过程快速而有趣,同时防止由于无法实现预期的CLI API而导致的任何问题。Click主要有以下3个亮点:命令的任意嵌套自动帮助页面生成支
持在运行时延迟加载子命令安装$ pip install clickClick支持Python 3.4和更新版本、Python 2.7和PyPy。首先先来一个例子,
import click
@click.command()
@click.option("--name", default="li", help="your name")
@click.option("--age", default=26, help="your age")
def hello_world(name, age):
click.echo(name)
print(age)
hello_world()命令行调用,$ python test.py --name ll --age 27
输出
ll
27
可以看出,上述主要用了click的3个方法,分别是,commandoptionecho这3个方法在Click工具中至关重要,除此之外还有其他的方法,它们的功能分别是,方法功能
command:用于装饰一个函数,使得该函数作为命令行的接口,例如上述装饰hello_world
option:用于装饰一个函数,主要功能是为命令行添加选项
echo:用于输出结果,由于print函数在2.x和3.x之间存在不同之处,为了更好的兼容性,因此提供了echo输出方法
Choice:输入为一个列表,列表中为选项可选择的值把上述程序的帮助信息输出
$ python test.py --help
Usage: test.py [OPTIONS]
Options:
--name TEXT your name
--age INTEGER your age
--help Show this message and exit.
在示例程序中,对于option只使用了default、help两个属性,除此之外option还有其他的属性选项,它们的功能如下,属性描述default:给命令行选项添加默认值help:给命令行选项添加帮助信息type:指定参数的数据类型,例如int、str、floatrequired:是否为必填选项,True为必填,False为非必填prompt:在命令行提示用户输入对应选项的信息nargs:指定命令行选项接收参数的个数,如果超过则会报错除此之外,Click还提供了group方法,该方法可以添加多个子命令,
import click
@click.group()
def first():
print("hello world")
@click.command()
@click.option("--name", help="the name")
def second(name):
print("this is second: {}".format(name))
@click.command()
def third():
print("this is third")
first.add_command(second)
first.add_command(third)
first()调用子命令second,$ python test.py second --name hh
输出
hello world
this is second: hh