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 应用,而无需处理繁琐的命令行参数解析。