2

一个构建Python命令行应用的开源库

 9 months ago
source link: https://xugaoxiang.com/2023/10/06/python-typer/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一个构建Python命令行应用的开源库 - 迷途小书童的Note迷途小书童的Note

> 编程语言 > Python > 实用模块 > 一个构建Python命令行应用的开源库

当我们编写 Python 程序时,我们经常需要与用户进行交互,接收输入并输出结果。Python 提供了许多方法来实现这一点,其中一个非常方便的方法是使用 typer 库。typer 是一个用于构建命令行应用程序的 Python 库,它使得创建命令行界面变得简单而直观。

想象一下,你正在编写一个程序,用于管理你的待办事项。你希望用户能够通过命令行界面添加、删除和列出任务。使用 typer 库,你可以轻松地实现这些功能。

首先,你需要安装 typer 库,可以使用以下命令在命令行中安装它



  1. pip install typer

安装完成后,你可以开始编写代码。让我们从一个简单的示例开始,创建一个命令行应用程序,用于添加和列出待办事项。



  1. import typer
  2. app = typer.Typer()
  3. @app.command()
  4. def add_task(task: str):
  5. # 在这里实现添加任务的逻辑
  6. typer.echo(f"添加任务:{task}")
  7. @app.command()
  8. def list_tasks():
  9. # 在这里实现列出任务的逻辑
  10. tasks = ["任务1", "任务2", "任务3"]
  11. typer.echo("待办事项列表:")
  12. for task in tasks:
  13. typer.echo(task)
  14. if __name__ == "__main__":
  15. app()

在这个例子中,我们首先导入了 typer 库,并创建了一个 Typer 对象,命名为 app,然后,我们使用 @app.command() 装饰器定义了两个命令函数: add_tasklist_tasks

add_task 函数用于添加任务。它接收一个名为 task 的参数,表示要添加的任务内容。在函数体内,你可以实现添加任务的逻辑,在这个例子中,我们只是简单地打印出要添加的任务。

list_tasks 函数用于列出任务。在函数体内,你可以实现列出任务的逻辑,在这个例子中,我们只是简单地创建了一个包含一些示例任务的列表,并使用 typer.echo 函数将它们打印出来。

最后,我们在 main 中调用 app() 方法。

现在,你可以在命令行中运行这个脚本,并使用 add_tasklist_tasks 命令来添加和列出任务。例如:



  1. python test.py add-task "购物"
  2. python test.py list-tasks

程序输出如下



  1. (notes) PS D:\Works\Gogs\Notes> python.exe test.py add-task "购物"
  2. 添加任务:购物
  3. (notes) PS D:\Works\Gogs\Notes> python.exe test.py list-tasks
  4. 待办事项列表:
  5. 任务1
  6. 任务2
  7. 任务3

通过这个简单的示例,你可以看到使用 typer 库创建命令行应用程序是多么简单和直观。你只需要定义命令函数,并使用 @app.command() 装饰器将它们与 Typer 对象关联起来。typer 库会自动处理命令行参数的解析和帮助文档的生成,让你可以专注于实现功能逻辑。

python typer

当然,这只是 typer 库的基本用法。它还提供了许多其他功能,例如处理选项参数、自定义帮助文档、处理用户输入等,感兴趣的话,可以查阅 typer 库的官方文档以了解更多详细信息,地址 https://typer.tiangolo.com/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK