一个写Python接口的库:Typer——Python的命令行革命

961 篇文章 0 订阅
555 篇文章 1 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3k次,点赞86次,收藏13次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

在编程的世界里,命令行工具一直是高效的代名词。无论是执行系统任务,还是构建复杂的自动化流程,命令行都有着不可替代的地位。然而,命令行应用的创建往往伴随着繁琐的参数解析和错误处理。幸运的是,Python社区为我们提供了一个名为Typer的库,它让命令行应用的开发变得简单而直观。

Typer的工作原理

Typer 是一个用于构建命令行界面(CLI)的库,它是基于Python的type hints来设计的,使得CLI的创建既简单又直观。它由 Sebastián Ramírez 创建,该作者也是另一个流行的现代Web框架FastAPI的作者。Typer不仅简化了命令行工具的开发过程,而且还通过自动化的方式,如生成帮助文档等,极大提升了开发效率。

Typer的设计核心在于利用Python的类型提示。类型提示不仅可以提高代码的可读性和可维护性,还允许Typer自动推断参数类型,并据此生成帮助信息和错误提示。这种设计思路可以称之为“约定优于配置”。

进阶层:案例分析

创建基本的命令行应用

让我们通过一个简单的例子来了解如何使用Typer创建一个基本的命令行应用。

from typer import Typer

app = Typer()

@app.command()
def greet(name: str):
    """简单的问候程序"""
    app.echo(f"Hello {name}!")

在这个例子中,我们创建了一个名为greet的命令,它接受一个位置参数name。运行这个程序,并通过命令行调用greet Kimi,将会输出Hello Kimi!

处理不同类型的参数

Typer支持多种类型的参数,包括字符串、整数、浮点数、布尔值等。下面的例子展示了如何定义和使用不同类型的参数。

from typer import Typer

app = Typer()

@app.command()
def calculate(number: float, operation: str, value: int):
    """执行基本的数学运算"""
    if operation == "add":
        result = number + value
    elif operation == "subtract":
        result = number - value
    else:
        raise ValueError("Unsupported operation")
    app.echo(f"The result is {result}")

在这个例子中,我们定义了一个calculate命令,它接受一个浮点数number,一个字符串operation和一个整数value。根据operation的值,程序将执行加法或减法运算,并输出结果。

错误处理和用户反馈

良好的错误处理和用户反馈对于命令行应用至关重要。Typer提供了简单的方法来处理参数错误和生成用户友好的反馈。

from typer import Typer, Option

app = Typer()

@app.command()
def backup(file: str, /, confirm: bool = Option(False, help="确认备份操作")):
    """执行数据备份"""
    if not confirm:
        app.echo("请确认您的操作!")
        return
    app.echo(f"正在备份 {file}...")

在这个例子中,我们为backup命令添加了一个可选的布尔参数confirm。如果用户没有明确提供这个参数,程序将提示用户确认操作。这有助于防止意外的数据丢失。

高级层:综合应用

构建复杂的命令行应用

随着你对Typer的熟悉,你可以开始构建更复杂的命令行应用。例如,你可以创建子命令来组织不同的功能,或者使用Typer的钩子函数来执行自定义的逻辑。

from typer import Typer, Option

app = Typer()

@app.command()
def serve(host: str, port: int, /, debug: bool = Option(False, help="启用调试模式")):
    """启动一个Web服务器"""
    if debug:
        app.echo("调试模式已启用")
    app.echo(f"服务器正在运行于 {host}:{port}...")
    # 这里可以添加启动服务器的代码

@app.serve.command("reload")
def reload_server():
    """重启Web服务器"""
    app.echo("服务器正在重启...")
    # 这里可以添加重启服务器的代码

在这个例子中,我们创建了一个serve命令,用于启动Web服务器。我们还添加了一个名为reload的子命令,用于重启服务器。这样的结构使得应用的功能更加清晰和模块化。

集成外部数据源

Typer可以与其他Python库无缝集成,使得你可以轻松地处理外部数据源。无论是读取配置文件,还是与数据库交互,Typer都能提供强大的支持。

import toml
from typer import Typer

app = Typer()

@app.command()
def config(path: str):
    """加载配置文件"""
    try:
        config_data = toml.load(path)
        app.echo(f"配置文件加载成功: {config_data}")
    except Exception as e:
        app.echo(f"加载配置文件出错: {e}")

在这个例子中,我们使用toml库来加载一个配置文件。通过Typer,我们可以很容易地将这个功能封装成一个命令行命令。

自定义帮助信息和版本控制

Typer允许你自定义命令和参数的帮助信息,以及应用的版本号。这使得你的应用更加专业和用户友好。

from typer import Typer, version_option

app = Typer(
    help="这是一个示例应用",
    version="0.1.0",
)

@app.command()
def version():
    """显示应用版本"""
    app.echo(f"当前版本: {app.version}")

在这个例子中,我们通过version_option装饰器为应用添加了一个版本号。我们还创建了一个version命令,用于显示当前的版本信息。

通过这篇文章,我们介绍了Typer库的基本概念、原理和使用方法。从创建基本的命令行应用到构建复杂的系统,Typer都能提供强大的支持。希望这篇文章能够帮助你快速上手Typer,并在你的项目中发挥它的强大功能。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述​​​

在这里插入图片描述

​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值