先通过一个简单的例子来认知一下click把
import click
@click.command()
@click.option(‘-p‘, ‘--port‘, default=(‘Cat‘, 5000), type=(str, int), help="localhost:port")
def run(port, password):
"""This is to simulate the local running port"""
click.echo("%s Run on http://127.0.0.1:%d" % port)
if __name__ == ‘__main__‘:
run()
我们来分析一下这个代码,从而入门click把
click.command()
让这个函数成为一个命令行工具click.option()
为这个函数的调用添加命令行选项
-p
--port
呢就是短选项和完整选项了,我们使用命令的时候,可以用-p+待传入的参数,也可以是--port+待传入的参数default
则是设置默认参数type
用于指定传入参数的类型,在4.0版本以后,这个代替了nargs
参数,可以用来设置传入多个值,并且规定了类型。help
则是提示语,当使用--help
的时候可以查看开发者的帮助文档click.echo()
代替了print()
,因为前者可以无需考虑python的版本。按照上面这个示例,平常很多需求已可以满足,接下来再介绍一些option的一些参数,以及一些别的装饰器。
prompt
这个是用来提示输入参数的
@click.command()
@click.option(‘-p‘, ‘--port‘, type=int, prompt=True, help="localhost:port")
def run(port):
"""This is to simulate the local running port"""
click.echo("Run on http://127.0.0.1:%d" % port)
if __name__ == ‘__main__‘:
run()
结果如下:
(flaskLearn) D:\>python try.py
Port: 8080
Run on http://127.0.0.1:8080
这个你也可以自己定义提示语,将prompt后的True改成自己的提示语即可
required=True
,这个参数默认是False,即非必须调用,而若是要必须选择,则将其设为True。option中的参数若是没有设置default,在没有使用该选项的时候其值为None。
多选项multiple=True
默认False。看如下例子:
@click.command()
@click.option(‘-p‘, ‘--port‘, multiple=True)
def run(port):
print("Run on", port)
(flaskLearn) D:\>python try.py -p 8080 -p 8000 -p 8081
Run on (‘8080‘, ‘8000‘, ‘8081‘)
这个与之前的type指定多选项有些类似,但是这个并不指定传入参数值的数量,并且使用的也是同一个参数,二者结合使用需要选择使用。
@click.password_option()
这个装饰器用来输入密码,以及确认密码的,示例如下:
@click.command()
@click.password_option()
def encrypt(password):
click.echo(‘Encrypting password to %s‘ % password.encode(‘rot13‘))
它的效果与如下的一样:
@click.command()
@click.option(‘--password‘, prompt=True, hide_input=True,
confirmation_prompt=True)
def encrypt(password):
click.echo(‘Encrypting password to %s‘ % password.encode(‘rot13‘))
结果如下:
$ encrypt
Password:
Repeat for confirmation:
Encrypting password to frperg
然后第二段代码可以自行选择是否确认和是否隐藏。
还有一个就是@click.confirmation_option()
,这个等于也是封装了Yes参数,示例如下:
@click.command()
@click.confirmation_option(prompt=‘Are you sure you want to drop the db?‘)
def dropdb():
click.echo(‘Dropped all tables!‘)
与一下代码效果相同:
def abort_if_false(ctx, param, value):
if not value:
ctx.abort()
@click.command()
@click.option(‘--yes‘, is_flag=True, callback=abort_if_false,
expose_value=False,
prompt=‘Are you sure you want to drop the db?‘)
def dropdb():
click.echo(‘Dropped all tables!‘)
结果如下:
$ dropdb
Are you sure you want to drop the db? [y/N]: n
Aborted!
$ dropdb --yes
Dropped all tables!
That‘s All
想看更多用法和更详细的讲解可以参考一下链接:https://click-docs-zh-cn.readthedocs.io/zh/latest/
原文:https://www.cnblogs.com/Fortunater/p/13566498.html