typer 命令行工具
Typer 构建命令行应用

Typer
1. 摘要
Typer 是一个构建命令行程序的python包,它具有一下几个优点:
- 设计简单,学习成本低,花费更少的时间debug
- 用户使用便捷,自动构建帮助文档并适配所有
shell
- 代码量低,减少大量重复
- 起步简单,只需两行代码即可构建一个app
2. 安装
pip install "typer[all]"
3. 实例
- 创建一个
test_app
命令,打印Hello
+ 参数
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()
装饰器,那么这个函数就成为了一个命令。
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
中,命令函数中的参数,就自动变成了命令的参数,因此用户很容易设置参数。
- 将上面两个命令合并为一个
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 add
和 git commit
等,因此typer
也支持给命令设置子命令。
- 两个子命令
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
还支持:
- 参数类型检查,默认设置,区间设置,交互式命令

3
- 彩色打印等

- 进度条

- 错误提醒

5. 小结
Typer
的优点和功能远不于此,本文主要对typer
, 一个python中构建命令行程序的包,做了一个简要介绍,主要起抛砖引玉的作用,如果有这方面需求的小伙伴可以自行研究。
往期推荐
本文由mdnice多平台发布
作者:冷冻工厂
链接:https://www.jianshu.com/p/4aceca2de3ac
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)