python click

来源:互联网 发布:怎么做淘宝网店客服 编辑:程序博客网 时间:2024/06/06 03:08

click 是 python中创建命令行语句的一个包。

一个简单的例子

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 greets name for a total of count times"""    for _ in range(count):        click.echo('hello %s' % name)if __name__ == '__main__':    hello()

这个可以直接运行,此时count的值默认为1,需要输入name即可运行。
或者在命令行里输入python xxx.py –count=3 –name=fff即可运行。

而python xxx.py –help可以输出所有的帮助信息。

建立虚拟环境:
pip install virtualenv
mkdir myproject
cd myproject
virtualenv venv
venv\scripts\activate

一个函数要想成为命令行语句,那么需要click.command()装饰

import click@click.command()def hello():    click.echo('hello world')if __name__ == '__main__':    hello()

语句python xxx.py运行得到‘hello world’

嵌套的命令

# 管理数据库的两种命令@click.group()def cli():    pass@click.command()def initdb():    click.echo('Initialized the database')@click.command()def dropdb():    click.echo('drop the database')cli.add_command(initdb)cli.add_command(dropdb)

group装饰器的工作方式与command的是一样的,只不过可以集成多个命令。
另外的一种写法

@click.group()def cli():    pass@cli.command()def initdb():    click.echo('Initialized the database')@cli.command()def dropdb():    click.echo('dropped the database')

添加一些参数:使用option()和argument()装饰器

@click.command()@click.option('--count', default=1, help='number of greetings')@click.argument('name')def hello(count, name):    for _ in range(count):        click.echo('hello %s' % name)

click 的options

# basic value options@click.command()@clidk.option('--n', defualt=1)def dots(n):    click.echo('-' * n)# multi value options@click.command()@click.option('--pos', nargs=2, type=float)def findme(pos):    click.echo('%s / %s' % pos)# tuples as multi value options@click.command()@click.option('--item', type=(unicode, int))def putitem(item):    click.echo('name=%s id=%d' % item)# mutli options@click.command()@click.option('--message', '-m', multiple=True)def commit(message):    click.echo('\n'.join(message))# counting@click.command()@click.option('-v', '--verbose', count=True)def log(verbose):    click.echo('Verbosity: %s' % verbose)