首页 > 编程 > Python > 正文

Python3 Click模块的使用方法详解

2020-02-15 21:13:26
字体:
来源:转载
供稿:网友

Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现。恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记。

国际惯例,先来一段 “Hello World” 程序(假定已经安装了 Click 包)。

# hello.pyimport 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 x in range(count):    click.echo('Hello %s!' % name)if __name__ == '__main__':  hello()

执行 python hello.py --count=3,不难猜到控制台的输出结果。除此之外,Click 还悄悄地做了其他的工作,比如帮助选项:

$ python hello.py --helpUsage: hello.py [OPTIONS] Simple program that greets NAME for a total of COUNT times.Options: --count INTEGER Number of greetings. --name TEXT   The person to greet. --help      Show this message and exit.

函数秒变 CLI

从上面的 “Hello World” 演示中可以看出,Click 是通过装饰器来把一个函数方法装饰成命令行接口的,这个装饰器方法就是 `@click.command()`。

import click@click.command()def hello():  click.echo('Hello World!')

`@click.command()装饰器把hello()方法变成了Command对象,当它被调用时,就会执行该实例内的行为。而–help参数就是Command` 对象内置的参数。

不同的 Command 实例可以关联到 group 中。group 下绑定的命令就成为了它的子命令,参考下面的代码:

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

`@click.group装饰器把方法装饰为可以拥有多个子命令的Group对象。由Group.add_command()方法把Command对象关联到Group对象。 也可以直接用@Group.command装饰方法,会自动把方法关联到该Group` 对象下。

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

命令行的参数是不可或缺的,Click 支持对 command 方法添加自定义的参数,由 option() 和 argument() 装饰器实现。

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

打包跨平台可执行程序

通过 Click 编写了简单的命令行方法后,还需要把 .py 文件转换成可以在控制台里运行的命令行程序。最简单的办法就是在文件末尾加上如下代码:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表