Typer 是一个深受开发者和使用者喜爱的命令行程序开发库。

简介说明

它也是一个命令行工具,它允许用户运行脚本,并自动将它们转换为命令行界面(CLI)应用程序。以下是其主要特点:

  1. 直观易写:
    • 提供出色的编辑器支持,使编写代码变得更为便捷。
    • 全面的自动补全功能,减少了用户在编写代码时的错误。
    • 设计简单易懂,学习成本低,减少了用户查阅文档的时间。
  2. 易于使用:
    • 对于最终用户来说,该工具易于操作。
    • 提供自动帮助文档和适用于所有shell的自动补全功能,增强了用户体验。
  3. 简洁高效:
    • 最小化代码重复,每个参数声明都带有多种功能,减少了错误出现的可能性。
  4. 快速入门:
    • 最简单的使用示例只需要在应用中添加两行代码:一行导入语句,一行函数调用。
  5. 高度可扩展:
    • 可以根据需要增加复杂度,创建任意复杂的命令树和子命令组,支持选项和参数。
  6. 运行脚本:
    • 内置了一个名为typer的命令/程序,允许用户运行脚本,并自动将它们转换为CLI应用程序,即使脚本内部没有使用Typer。
    • img

Documentation: https://typer.tiangolo.com

Source Code: https://github.com/tiangolo/typer

安装

Typer is FastAPI’s little sibling, it’s the FastAPI of CLIs.

1
pip install typer

示例代码

带有两个子命令的示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import typer

app = typer.Typer()


@app.command()
def hello(name: str):
print(f"Hello {name}")


@app.command()
def goodbye(name: str, formal: bool = False):
if formal:
print(f"Goodbye Ms. {name}. Have a good day.")
else:
print(f"Bye {name}!")


if __name__ == "__main__":
app()

And that will:

  • Explicitly create a typer.Typer app.
  • The previous typer.run actually creates one implicitly for you.
  • Add two subcommands with @app.command().
  • Execute the app() itself, as if it was a function (instead of typer.run).

命令行帮助

1
2
3
4
python main.py --help

Usage: main.py [OPTIONS] COMMAND [ARGS]...

子命令hello帮助

1
2
3
4
python main.py hello --help

Usage: main.py hello [OPTIONS] NAME

子命令goodbye帮助

1
2
3
4
python main.py goodbye --help

Usage: main.py goodbye [OPTIONS] NAME