click介绍

Click介绍

Click是一个python库,用来写命令行接口的。默认python自带了argparse和optparse两个library来帮助用户很方便的写出用户友好的命令行接口。

这里 解释了为什么推荐大家用Click。主要亮点是可以类似搭积木组合那样,生成复杂的类似UNix命令行。而且自带了很多辅助参数类似,比如说文件参数, 还有彩色输出格式等等。

is lazily composable without restrictionsfully follows the Unix command line conventionssupports loading values from environment variables out of the boxsupports for prompting of custom valuesis fully nestable and composableworks the same in Python 2 and 3supports file handling out of the boxcomes with useful common helpers (getting terminal dimensions, ANSI colors, fetching direct keyboard input, screen clearing, finding config paths, launching apps and editors, etc.)

Click的作者Armin Ronacher其实就是Flask Web开发框架的作者。所以Click的文档看起来跟Flask的在线文档格式一样。文档看起来漂亮得很。

实例

click文档首页写了一个例子。我根据文档说明很快也写出了包含子命令的接口程序。代码就这样。创建了一个命令组,可以理解成Base,有一些子命令共同的参数。然后建立了子命令,每个子命令添加自己的参数。

#!/usr/bin/pythonimport click@click.group()@click.option('--force', '-f', is_flag=True, help="Specify flavor name")def flavor(force):    click.echo("this is group cli")    if force:        click.echo("--force is set to %s" % force)@flavor.command('flavor-list', help="list flavor object")@click.option('--name', help="specify flavor name")def flavor_list(name):    if name:        click.echo("only list %s flavor" % name)    else:        click.echo("list all flavor")@flavor.command('flavor-create', help="create flavor object")@click.argument('name')@click.argument('cpu')@click.argument('ram')def flavor_create(name, cpu, ram):    click.echo("flavor-create with param: %s %s %s" % (name, cpu, ram))@flavor.command('flavor-delete', help="delete flavor object")@click.argument('name')def flavor_delete(name):    click.echo("flavor-delete %s" % name)if __name__ == "__main__":    flavor()

这个例子的运行结果。

[ray@fedora click]$ ./hello.py Usage: hello.py [OPTIONS] COMMAND [ARGS]...Options:  -f, --force  specify flavor name  --help       Show this message and exit.Commands:  flavor-create  create flavor object  flavor-delete  delete flavor object  flavor-list    list flavor object[ray@fedora click]$ ./hello.py ^C[ray@fedora click]$ vim hello.py [ray@fedora click]$ ./hello.py Usage: hello.py [OPTIONS] COMMAND [ARGS]...Options:  -f, --force  Specify flavor name  --help       Show this message and exit.Commands:  flavor-create  create flavor object  flavor-delete  delete flavor object  flavor-list    list flavor object[ray@fedora click]$ ./hello.py flavor-createthis is group cliUsage: hello.py flavor-create [OPTIONS] NAME CPU RAMError: Missing argument "name".[ray@fedora click]$ ./hello.py flavor-create name 1 1024this is group cliflavor-create with param: name 1 1024[ray@fedora click]$ ./hello.py flavor-deletethis is group cliUsage: hello.py flavor-delete [OPTIONS] NAMEError: Missing argument "name".[ray@fedora click]$ ./hello.py flavor-delete myFlavorthis is group cliflavor-delete myFlavor[ray@fedora click]$ ./hello.py flavor-listthis is group clilist all flavor[ray@fedora click]$ ./hello.py flavor-list myFlavorthis is group cliUsage: hello.py flavor-list [OPTIONS]Error: Got unexpected extra argument (myFlavor)[ray@fedora click]$ ./hello.py flavor-list --name myFlavorthis is group clionly list myFlavor flavor

参考资料https://pypi.python.org/pypi/click/2.1http://click.pocoo.org/

click介绍

相关文章:

你感兴趣的文章:

标签云: