Python Typer 使用指南

2,634 阅读2分钟

Typer 是一个用于构建命令行界面(CLI)应用的 Python 库,致力于提供简单、直观的方式来定义命令行参数和选项。在本指南中,我们将详细介绍如何使用 Typer 编写 CLI 应用程序。

安装

首先,我们需要安装 Typer。您可以使用以下命令通过 pip 安装:

pip install typer

基本用法

让我们从创建一个简单的 CLI 程序开始。我们将创建一个名为 hello.py 的文件,并在其中编写以下代码:

import typer

def hello(name: str):
    typer.echo(f"Hello, {name}!")

if __name__ == "__main__":
    typer.run(hello)

在这个简单的示例中,我们首先导入了 typer 模块。然后,我们定义了一个名为 hello 的函数,该函数接受一个字符串参数 name。函数体中,我们使用 typer.echo 输出一条欢迎信息。

最后,我们使用 typer.run 函数运行我们的 hello 函数。这将自动将命令行参数解析为函数参数,并调用该函数。

现在,您可以在命令行中运行此程序:

python hello.py Alice

输出:

Hello, Alice!

使用选项

Typer 允许您轻松地定义命令行选项。让我们为 hello.py 添加一个布尔选项,以确定是否应将问候消息设置为大写:

import typer

def hello(name: str, uppercase: bool = typer.Option(False, "--uppercase", "-u")):
    if uppercase:
        typer.echo(f"HELLO, {name.upper()}!")
    else:
        typer.echo(f"Hello, {name}!")

if __name__ == "__main__":
    typer.run(hello)

我们在 hello 函数中添加了一个名为 uppercase 的布尔参数,并为其分配了一个 typer.Option 实例。Option 实例接受两个命令行标志(--uppercase-u)及其默认值(False)。

现在,您可以在命令行中使用新的选项运行此程序:

python hello.py Alice --uppercase

输出:

HELLO, ALICE!

使用子命令

Typer 还支持创建子命令。让我们创建一个包含两个子命令的新应用程序:一个用于将文本转换为大写,另一个用于将文本转换为小写。我们将创建一个名为 text_transform.py 的文件,并在其中编写以下代码:

import typer

app = typer.Typer()

@app.command()
def uppercase(text: str):
    typer.echo(text.upper())

@app.command()
def lowercase(text: str):
    typer.echo(text.lower())

if __name__ == "__main__":
    app()

我们首先创建了一个 typer.Typer 实例。然后,我们定义了两个函数,分别用于将文本转换为大写和小写。我们使用 @app.command() 装饰器将这些函数注册为子命令。

现在,您可以在命令行中使用子命令运行此程序:

python text_transform.py uppercase "Hello, World!"

输出:

HELLO, WORLD!
python text_transform.py lowercase "Hello, World!"

输出:

hello, world!

总结

在本指南中,我们介绍了如何使用 Python 的 Typer 库来构建命令行界面应用程序。我们介绍了如何定义参数、选项和子命令,以及如何执行程序。Typer 提供了一种简洁、直观的方式来构建功能强大的 CLI 应用,而无需处理繁琐的命令行参数解析。