美文网首页
Typer 构建命令行应用

Typer 构建命令行应用

作者: 数据科学工厂 | 来源:发表于2022-09-19 21:01 被阅读0次

    Typer 构建命令行应用

    Typer

    1. 摘要

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

    1. 设计简单,学习成本低,花费更少的时间debug

    2. 用户使用便捷,自动构建帮助文档并适配所有shell

    3. 代码量低,减少大量重复

    4. 起步简单,只需两行代码即可构建一个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 addgit 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还支持:

    1. 参数类型检查,默认设置,区间设置,交互式命令
    3
    1. 彩色打印等
    1. 进度条
    1. 错误提醒

    5. 小结

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

    往期推荐

    本文由mdnice多平台发布

    相关文章

      网友评论

          本文标题:Typer 构建命令行应用

          本文链接:https://www.haomeiwen.com/subject/yfbvortx.html