社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用 Python 和 Click 编写命令行应用程序

一个普普通通简简单单平平凡凡的神 • 7 年前 • 392 次点击  
导读:python 构建命令行应用的第三方比较有名的包除了 click 之外还有一个叫 docopt,这是一个以文档先行为目标的包。个人是比较倾向于 Click 的,看了这篇文章之后,也很快写了一个 demo。

我对命令行很着迷。

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

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

安装

$ pip install click

Hello, World

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

import click

@click.command()
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

@click.command()
@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

@click.command()
@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

@click.command()
@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!

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

原文: How to write a command-line application using Python and Click

扩展阅读:

极光日报,极光开发者旗下媒体。
每天导读三篇英文技术文章。

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/Jj5M3Xs9U8
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12157
 
392 次点击