失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python编写命令行框架_使用 Python 和 Click 编写命令行应用程序

python编写命令行框架_使用 Python 和 Click 编写命令行应用程序

时间:2018-07-14 08:42:53

相关推荐

python编写命令行框架_使用 Python 和 Click 编写命令行应用程序

简评:python 构建命令行应用的第三方比较有名的包除了 click 之外还有一个叫 docopt,这是一个以文档先行为目标的包。个人是比较倾向于 Click 的,看了这篇文章之后,也很快写了一个 demo。

我对命令行很着迷。

我想为自己构建一个命令行应用程序,有这个想法之后,经过一番研究,我发现 Python 自带的内置模块 argparse 是不够的。

然后,我发现了「Click」模块。所以,今天,我们将尝试使用 Python 和 Click 创建一个基本的应用程序。

安装

$ pip install click

Hello, World

让我们保持传统,首先编写一个「Hello,World」,将这个文件命名为 cli.py

import click

@mand()

def hello():

click.echo('Hello World!')

click.echo() 向给定的文件或标准输出打印一条消息外加一个换行符,初看起来,这很像 print函数,但它改进了对处理 Unicode 和二进制数据的支持。

command 装饰器将函数转换成一个可以被调用的命令:

if __name__ == '__main__':

hello()

调用时是这样的:

$ python hello.py

Hello World!

对应的帮助信息是这样的:

$ python hello.py --help

Usage: hello.py [OPTIONS]

Options:

--help Show this message and exit.

参数

目前,我们没有太多的计划工作,让我们给它添加一些参数。

import click

@mand()

@click.argument('name')

def hello(name):

click.echo(f"Hello, {name}!")

if __name__ == '__main__':

hello()

运行:

$ python cli.py Anshul

Hello, Anshul!

如果没有参数,运行:

$ python cli.py

Usage: cli.py [OPTIONS] NAME

Error: Missing argument "name".

选项

顾名思义,这些是选项,不同于我们上面看到的参数,选项是可选的,不是强制性的。

import click

@mand()

@click.option('--count', default=1, help="Number of greetings.")

@click.argument('name')

def hello(count, name):

for i in range(count):

click.echo(f"Hello, {name}!")

if __name__ == '__main__':

hello()

运行:

$ python cli.py Anshul --count 3

Hello, Anshul!

Hello, Anshul!

Hello, Anshul!

布尔 flags

有一些选项不需要任何值,他们只是 flag(即标识)。例如 --help 命令,它并不需要一个值,另一个可能在使用 cli 工具时会注意到的例子是 --version。

import click

@mand()

@click.option('--flag', is_flag=True)

def hello(flag):

if flag:

click.echo("Our flag will sail high and above!")

else:

click.echo("Well, that didn't go as planned!")

if __name__ == '__main__':

hello()

运行:

$ python cli.py

Well, that didn't go as planned!

$ python cli.py --flag

Our flag will sail high and above!

现在就是这样,从这里开始你就可以做很多事情了

扩展阅读:极光日报,极光开发者旗下媒体。

每天导读三篇英文技术文章。

如果觉得《python编写命令行框架_使用 Python 和 Click 编写命令行应用程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。