Typer 命令行工具开发入门指南

Typer 命令行工具开发入门指南

typer Typer是一款基于Python类型提示构建的库,用于轻松编写高质量命令行接口(CLI)程序。 typer 项目地址: https://gitcode.com/gh_mirrors/ty/typer

什么是 Typer

Typer 是一个基于 Python 类型提示(Type Hints)的现代命令行界面(CLI)开发框架。它让开发者能够快速构建强大且用户友好的命令行工具,同时保持代码简洁明了。

最简单的 Typer 示例

让我们从一个最简单的 Typer 程序开始:

def main():
    print("Hello World")

if __name__ == "__main__":
    import typer
    typer.run(main)

将上述代码保存为 main.py 并运行:

python main.py

程序会输出 "Hello World"。虽然这个程序功能简单,但它展示了 Typer 的基本结构。

理解 CLI 参数与选项

在开发命令行工具时,我们需要区分两种主要的输入方式:

CLI 参数(Arguments)

CLI 参数是按特定顺序传递给程序的参数。例如:

ls ./myproject

这里 ./myproject 就是一个 CLI 参数,它表示要列出内容的目录路径。参数的特点是:

  • 默认情况下是必需的
  • 顺序很重要
  • 没有前缀标识符

CLI 选项(Options)

CLI 选项是通过特定名称传递的参数。例如:

ls --size ./myproject

这里 --size 就是一个 CLI 选项,它告诉 ls 命令显示文件大小。选项的特点是:

  • 默认情况下是可选的
  • 顺序不重要
  • 通常以 --- 开头

添加 CLI 参数

让我们扩展我们的程序,添加一个名字参数:

def main(name: str):
    print(f"Hello {name}")

if __name__ == "__main__":
    import typer
    typer.run(main)

现在运行程序时需要提供名字参数:

python main.py Camila

如果忘记提供参数,Typer 会自动显示友好的错误提示。

添加多个 CLI 参数

我们可以添加更多参数,例如名字和姓氏:

def main(name: str, lastname: str):
    print(f"Hello {name} {lastname}")

if __name__ == "__main__":
    import typer
    typer.run(main)

使用时必须按顺序提供两个参数:

python main.py Camila Gutiérrez

添加 CLI 选项

现在让我们添加一个 --formal 选项来控制问候语的正式程度:

def main(name: str, lastname: str, formal: bool = False):
    if formal:
        print(f"Good day Ms. {name} {lastname}.")
    else:
        print(f"Hello {name} {lastname}")

if __name__ == "__main__":
    import typer
    typer.run(main)

由于 formal 是布尔类型,Typer 会自动生成 --formal--no-formal 两个选项:

python main.py Camila Gutiérrez --formal

将参数转换为选项

我们可以将姓氏参数改为选项,使其变为可选:

def main(name: str, lastname: str = ""):
    if lastname:
        print(f"Hello {name} {lastname}")
    else:
        print(f"Hello {name}")

if __name__ == "__main__":
    import typer
    typer.run(main)

现在 lastname 变成了可选选项 --lastname

python main.py Camila --lastname Gutiérrez

添加文档说明

良好的文档是 CLI 工具的重要组成部分。我们可以通过函数文档字符串(docstring)为程序添加帮助信息:

def main(name: str, lastname: str = "", formal: bool = False):
    """
    Say hi to NAME, optionally with a --lastname.
    If --formal is used, say hi very formally.
    """
    if formal:
        print(f"Good day Ms. {name} {lastname}." if lastname else f"Good day Ms. {name}.")
    else:
        print(f"Hello {name} {lastname}" if lastname else f"Hello {name}")

if __name__ == "__main__":
    import typer
    typer.run(main)

现在运行 --help 会显示我们添加的文档:

python main.py --help

总结

通过本教程,我们学习了:

  1. 如何创建基本的 Typer CLI 程序
  2. 理解 CLI 参数和选项的区别
  3. 添加必需和可选参数
  4. 使用布尔选项
  5. 为程序添加文档说明

Typer 的强大之处在于它利用 Python 的类型提示系统,使得 CLI 开发变得直观且类型安全。随着深入学习,你会发现 Typer 还支持更复杂的特性,如子命令、自动补全和丰富的参数验证等。

typer Typer是一款基于Python类型提示构建的库,用于轻松编写高质量命令行接口(CLI)程序。 typer 项目地址: https://gitcode.com/gh_mirrors/ty/typer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋韵庚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值