首页 > 编程语言 >python笔记 - 用typer开发CLI程序

python笔记 - 用typer开发CLI程序

时间:2024-06-10 17:58:21浏览次数:13  
标签:CLI title python app books Typer book typer

探索 Typer

在开发命令行界面(CLI)应用程序时,Python 提供了许多优秀的库,如 argparseclick 等。然而,Typer 作为一个相对较新的库,以其简洁性和强大的功能脱颖而出。Typer 基于 Click,但利用了 Python 的类型提示(type hints)来简化开发过程。

为什么选择 Typer?

  • 简洁性:通过类型提示和函数签名自动生成命令行参数和选项。
  • 自动化:自动生成帮助信息和文档。
  • 类型安全:利用类型提示提供更好的 IDE 支持和错误检测。

安装 Typer

首先,我们需要安装 Typer。可以使用 pip 来安装:

pip install typer

快速上手

让我们通过一个简单的示例来看看 Typer 是如何工作的。假设我们要创建一个命令行程序来管理一个书籍清单。

import typer

app = typer.Typer()

books = []

@app.command()
def add(title: str, author: str):
    """添加一本书到清单中"""
    books.append({"title": title, "author": author})
    typer.echo(f"已添加书籍: {title} by {author}")

@app.command()
def list():
    """列出所有书籍"""
    if books:
        typer.echo("书籍清单:")
        for book in books:
            typer.echo(f"{book['title']} by {book['author']}")
    else:
        typer.echo("书籍清单为空")

@app.command()
def remove(title: str):
    """从清单中删除一本书"""
    global books
    books = [book for book in books if book["title"] != title]
    typer.echo(f"已删除书籍: {title}")

if __name__ == "__main__":
    app()

代码解释

  1. 导入和初始化

    import typer
    app = typer.Typer()
    
  2. 命令定义
    我们定义了三个命令:addlistremove,分别用于添加、列出和删除书籍。

    • add 命令:

      @app.command()
      def add(title: str, author: str):
          books.append({"title": title, "author": author})
          typer.echo(f"已添加书籍: {title} by {author}")
      

      该命令接收两个参数 titleauthor,并将书籍信息添加到 books 列表中。

    • list 命令:

      @app.command()
      def list():
          if books:
              typer.echo("书籍清单:")
              for book in books:
                  typer.echo(f"{book['title']} by {book['author']}")
          else:
              typer.echo("书籍清单为空")
      

      该命令用于列出所有书籍。

    • remove 命令:

      @app.command()
      def remove(title: str):
          global books
          books = [book for book in books if book["title"] != title]
          typer.echo(f"已删除书籍: {title}")
      

      该命令接收一个参数 title,并从 books 列表中删除对应的书籍。

  3. 运行应用

    if __name__ == "__main__":
        app()
    

    这行代码使得我们的 Typer 应用可以作为脚本直接运行。

运行示例

让我们看看如何运行这些命令:

  • 添加一本书:

    python app.py add "Python 101" "Michael Driscoll"
    

    输出:

    已添加书籍: Python 101 by Michael Driscoll
    
  • 列出所有书籍:

    python app.py list
    

    输出:

    书籍清单:
    Python 101 by Michael Driscoll
    
  • 删除一本书:

    python app.py remove "Python 101"
    

    输出:

    已删除书籍: Python 101
    

结论

Typer 是一个强大且易于使用的库,适合用于快速开发命令行应用。通过利用类型提示,它不仅减少了编码量,还提高了代码的可读性和可维护性。如果你正在寻找一个现代化的 CLI 库,不妨试试 Typer!

希望这篇博客能帮助你更好地理解和使用 Typer。Happy coding!

标签:CLI,title,python,app,books,Typer,book,typer
From: https://blog.csdn.net/jiangnanjunxiu/article/details/139578615

相关文章

  • 使用Python脚本运行Amesim模型(2)
    上期使用Python脚本运行Amesim模型我们介绍了使用python脚本运行一简单的模型,本次带来一阀控缸的模型。涉及文件命名等具体操作细节可以参考上一期。该模型所需模块如上图所示。Python脚本代码:#ImportSimcenterAmesimPythonmoduleimportamesimimportpylabimp......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-006 连续因子
    L1-006连续因子一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3×5×6×7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数N(1<N<2^31)。输......
  • pythonD盘JPG全部转成PDF
    importosfromPILimportImagefromreportlab.lib.pagesizesimportletterfromreportlab.pdfgenimportcanvasdefget_jpg_files(directory):"""获取指定目录下所有JPG文件的路径"""jpg_files=[os.path.join(directory,f)f......
  • 端午安康代码PYTHON
    importrandomfrommathimportsin,cos,pi,logfromtkinterimport*CANVAS_WIDTH=640CANVAS_HEIGHT=480CANVAS_CENTER_X=CANVAS_WIDTH/2CANVAS_CENTER_Y=CANVAS_HEIGHT/2IMAGE_ENLARGE=11HEART_COLOR="#FF99CC"defcent......
  • python爬虫笔记——学习笔记—6
    爬虫笔记——学习笔记—61.安装scrapy打开此电脑![img](file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png在桌面的上栏目输入cmd并打开再命令框中升级python:python-mpipinstall–upgradepip安装scrapy:pipinstallscrapy安装......
  • python-数据分析-Pandas-5、DataFrame-index
    Index类型,它为Series和DataFrame对象提供了索引服务,有了索引我们就可以排序数据(sort_index方法)、对齐数据(在运算和合并数据时非常重要)并实现对数据的快速检索(索引运算)。由于DataFrame类型表示的是二维数据,所以它的行和列都有索引,分别是index和columns。Index类型的创建的比较简单......
  • 如何用python修复一张有多人图像的老照片,修复后照片是彩色高清
    要修复一张有多人图像的老照片,可以使用OpenCV库和深度学习模型。以下是一个简单的示例:```pythonimportcv2importnumpyasnpimporttensorflowastffromtensorflow.keras.modelsimportload_model#加载预训练的深度学习模型model=load_model('path/to/your/mode......
  • python常用函数
    python常用函数一、进制转换#字符串与ASCII码转换print(ord("A"))#65print(chr(65))#A#进制转换print(bin(78))#0b1001110print(oct(78))#0o116print(hex(78))#0x4eprint(int('4e',16))二、数学函数函数返回值(描述)abs(x)返......
  • 将这张图片修复为彩色高清,然后在Python中,可以使用以下库来执行上述任务
    将这张图片修复为彩色高清,然后在Python中,可以使用以下库来执行上述任务OpenCV:用于图像处理、面部检测等。dlib:用于面部检测和特征点标记。Scikit-image:用于图像处理和修复。TensorFlow或PyTorch:用于训练和使用深度学习模型,如图像修复GAN和超分辨率模型。首先,我们需要将......
  • python快速生成二维码及读取二维码内容 pyqrcode MyQR pyzbar
    目录效果图生成二维码方式1:pyqrcode方式2:MyQR  读取二维码效果图生成二维码方式1:pyqrcode安装pipinstallpyqrcode代码实现importpyqrcode#text为保存在二维码的内容。text为完整链接时,扫描后可直接跳转到该链接text='https://www.baidu.com/'qr=pyqrc......