Typer 构建命令行应用
2023-06-13 09:15:16 时间
Typer
1. 摘要
Typer[1] 是一个构建命令行程序的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中构建命令行程序的包,做了一个简要介绍,主要起抛砖引玉的作用,如果有这方面需求的小伙伴可以自行研究。
参考资料
[1]
Typer: https://typer.tiangolo.com
相关文章
- 3分钟短文:胆儿真肥!Laravel在命令行问用户要数据!
- 干货 | YARN 应用日志相关参数解析及如何使用命令行查看应用日志
- 干货 | 5000字教你如何使用命令行查看应用日志以及YARN应用日志相关参数解析
- 【Flutter】Flutter 应用创建运行 ( Android Studio 创建 / 运行 Flutter 应用 | 命令行创建 / 运行 Flutter 应用 )
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
- Linux命令行启动系统操作指南(linux命令行开机)
- 从Linux命令行掌控计算机:实用的Linux命令应用(linux命令应用)
- 掌握Linux命令行,轻松输出结果(linux命令行输出)
- else使用Linux命令行判断条件:if…else…(linux命令行if)
- 参数Linux命令行参数解析:从args开始(linuxargs)
- PacVim:一个学习 vim 命令的命令行游戏
- 教你轻松操控Linux: FTP命令行使用攻略(linuxftp命令行)
- MySQL命令行窗口:解锁数据库的力量(mysql命令行窗口)
- 远程控制Linux服务器,轻松实现命令行操作(linux 远程 命令)
- Linux测试:简洁有效的命令行操作(linux测试命令)
- Oracle数据库安装使用命令行最为便捷(oracle使用命令安装)
- key删除Redis中Key的命令行配置(redis配置命令行删除)
- .NET命令行解析器示例程序(命令行选项功能)