首页 > 其他分享 >Typer 构建命令行应用

Typer 构建命令行应用

时间:2022-09-20 21:13:40浏览次数:107  
标签:__ name sub1 app 构建 命令行 Typer typer

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多平台发布

标签:__,name,sub1,app,构建,命令行,Typer,typer
From: https://www.cnblogs.com/swindler/p/16712540.html

相关文章

  • cmd命令行的自动补全
    1.第一步,win+R打开,输入‘regedit’2.进去之后一直搜索目录,找到HKEY_LOCAL_MACHINE\Software\Microsoft\CommandProsessor\CompletionChar3.更改数据将数值数据改为9,基......
  • vite+svelte项目构建篇
    描述学习博文[https://juejin.cn/post/7121759118070644772#heading-21]1、项目构建步骤:#1、新建文件夹study-vite-svelte#2、下载模板的命令npminitvite@late......
  • python-命令行参数处理 getopt模块详解
    有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实......
  • 如何使用 Prefect 中的任务、流和子流构建模块化数据流
    如何使用Prefect中的任务、流和子流构建模块化数据流以及如何在Prefect数据管道中定义状态和数据依赖关系磷反射是一个协调平面对于不断发展的数据世界。使用长......
  • 构建更好的标签云
    发表于2018年2月1日  下载该项目的源代码和二进制文件可在https://github.com/BradSmith1985/TagClouds典型的标签云标签云是一种显示主题/类别列表及其相......
  • 阿里云张新涛:连接产业上下游,构建XR协作生态
    简介: 用交互技术辅以澎湃的算力带给大家最真实的“沉浸式体验”2022年9月2日,在世界人工智能大会“区块新生数字宇宙——元宇宙技术与生态合作”分论坛上,阿里云......
  • bandzip命令行
    bandzip命令行一、bandzip介绍二、bandzip参数bz7.17(Beta,x64)-Bandizipconsoletool.Copyright(C)2021BandisoftERROR:ParameterParingErrorUsage:bz......
  • 迅为3568开发板文件系统构建之简介
    迅为3568开发板文件系统构建之简介 1.1根文件系统简介在移植Linux系统的时候,我们需要先移植一个bootloader代码,bootLoader用于启动Linux内核,然后移植LinuxKernel,......
  • 02.构建RESTful API相关
    几个常用注解@Controller:修饰class,用来创建处理http请求的对象@RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@R......
  • 如何轻松构建稳定的 Diffusion Web 应用 + Web 的未来
    如何轻松构建稳定的DiffusionWeb应用+Web的未来稳定的传播和类似的机器学习模型为独立开发者打开了构建革命性新软件产品的大门。这是一个使用稳定扩散来帮助创建......