前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Typer 构建命令行应用

Typer 构建命令行应用

作者头像
数据科学工厂
发布2023-02-27 11:25:42
2920
发布2023-02-27 11:25:42
举报
文章被收录于专栏:数据科学(冷冻工厂)

Typer

1. 摘要

Typer[1] 是一个构建命令行程序的python包,它具有以下几个优点:

  1. 设计简单,学习成本低,花费更少的时间debug
  2. 用户使用便捷,自动构建帮助文档并适配所有shell
  3. 代码量低,减少大量重复
  4. 起步简单,只需两行代码即可构建一个app

2. 安装

代码语言:javascript
复制
pip install "typer[all]"

3. 实例

  • 创建一个test_app命令,打印Hello + 参数
代码语言:javascript
复制
import typer

app = typer.Typer()


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


if __name__ == "__main__":
    app()

  • 打印帮助文档
  • 测试

4. 用法简介

4.1. 命令

typer中,只要给每一个函数加上@app.command()装饰器,那么这个函数就成为了一个命令。

代码语言:javascript
复制
import typer

app = typer.Typer()


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

@app.command()
def test_2(age: int):
    print(f"{age} years old")    

if __name__ == "__main__":
    app()

  • help
  • 测试

需要多少个命令,写多少个函数即可。

4.2. 参数

typer中,命令函数中的参数,就自动变成了命令的参数,因此用户很容易设置参数。

  • 将上面两个命令合并为一个
代码语言:javascript
复制
import typer

app = typer.Typer()


@app.command()
def test_cli(name: str, age: int):
    print(f"Hello {name} \n age: {age}")


if __name__ == "__main__":
    app()
  • help文档
  • 测试

需要多少个命令参数,设置多少个函数参数即可

4.3. 子命令

例如git命令还存在git addgit commit 等,因此typer也支持给命令设置子命令。

  • 两个子命令
代码语言:javascript
复制
import typer

app = typer.Typer()

sub1 = typer.Typer()

app.add_typer(sub1, name="sub1")

sub2 = typer.Typer()
app.add_typer(sub2, name="sub2")


@sub1.command("sub1")
def sub1_item(space1: str):
    print(f"Creating sub1: {sub1}")


@sub2.command("sub2")
def sub2_item(space1: str):
    print(f"Creating sub1: {sub2}")


if __name__ == "__main__":
    app()
  • help文档
  • 子命令 sub1

以上只是对typer的基础介绍,typer还支持:

  1. 参数类型检查,默认设置,区间设置,交互式命令

3

  1. 彩色打印等
  1. 进度条
  1. 错误提醒

5. 小结

Typer的优点和功能远不于此,本文主要对typer, 一个python中构建命令行程序的包,做了一个简要介绍,主要起抛砖引玉的作用,如果有这方面需求的小伙伴可以自行研究。

参考资料

[1]

Typer: https://typer.tiangolo.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冷冻工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 摘要
  • 2. 安装
  • 3. 实例
  • 4. 用法简介
    • 4.1. 命令
      • 4.2. 参数
        • 4.3. 子命令
        • 5. 小结
          • 参考资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档