Typer-让命令行应用开发变得简单又优雅!

水水说说 2024-11-02 10:28:01

今天要给大家介绍一个超级好用的Python库 - Typer!它是FastAPI的创建者开发的一个命令行应用框架,可以让我们轻松创建出专业级别的命令行程序。不管是做个小工具还是开发大型CLI应用,用它都特别方便!

为什么选择Typer?

Typer的优势真的很明显:

类型提示支持:通过Python的类型注解实现参数验证

自动生成帮助文档:不用手写文档,代码即文档

命令补全功能:支持shell的命令补全

颜色丰富的输出:让命令行界面更美观专业

快速开始

让我们从一个最简单的例子开始:

import typerapp = typer.Typer()@app.command()def hello(name: str = "World"):    """向用户打招呼"""    typer.echo(f"Hello {name}!")if __name__ == "__main__":    app.run()

💡小贴士:运行这段代码后,你可以在命令行输入 python script.py --help 看看自动生成的帮助信息哦!

添加命令行参数

来看看如何添加更多类型的参数:

import typerfrom typing import Optionalfrom datetime import datetimeapp = typer.Typer()@app.command()def create_user(    username: str,  # 必选参数    age: int = typer.Option(18, "--age", "-a"),  # 可选参数带默认值    is_admin: bool = typer.Option(False, "--admin"),  # 布尔标志    birthday: Optional[datetime] = typer.Option(None, formats=["%Y-%m-%d"])  # 日期参数):    """创建新用户"""    typer.echo(f"创建用户: {username}")    typer.echo(f"年龄: {age}")    typer.echo(f"管理员: {is_admin}")    if birthday:        typer.echo(f"生日: {birthday.strftime('%Y-%m-%d')}")if __name__ == "__main__":    app.run()

美化输出

Typer提供了丰富的输出样式,让我们的CLI应用更专业:

import typerfrom time import sleepdef process_files():    total = 100    with typer.progressbar(range(total)) as progress:        for value in progress:            # 模拟处理文件            sleep(0.01)        # 使用不同颜色输出    typer.secho("处理完成!", fg=typer.colors.GREEN, bold=True)    typer.secho("警告信息", fg=typer.colors.YELLOW)    typer.secho("错误信息", fg=typer.colors.RED)if __name__ == "__main__":    typer.run(process_files)

子命令支持

对于复杂的CLI应用,我们可以使用子命令来组织功能:

import typerapp = typer.Typer()db_app = typer.Typer()app.add_typer(db_app, name="db")@db_app.command("init")def db_init():    """初始化数据库"""    typer.echo("初始化数据库...")@db_app.command("migrate")def db_migrate(version: str):    """数据库迁移"""    typer.echo(f"迁移数据库到版本: {version}")@app.command()def info():    """显示系统信息"""    typer.echo("系统正常运行中...")if __name__ == "__main__":    app.run()

💡小贴士:运行子命令的方式是 python script.py db init 或 python script.py db migrate 1.0

0 阅读:2

水水说说

简介:观世界品百味,欢迎大家关注我,给我点赞