一款构建Python命令行应用的开源库

1

   

简介

当我们编写 Python 程序时,我们经常需要与用户进行交互,接收输入并输出结果。Python 提供了许多方法来实现这一点,其中一个非常方便的方法是使用 typer 库。typer 是一个用于构建命令行应用程序的 Python 库,它使得创建命令行界面变得简单而直观。

想象一下,你正在编写一个程序,用于管理你的待办事项。你希望用户能够通过命令行界面添加、删除和列出任务。使用 typer 库,你可以轻松地实现这些功能。

2

   

安装

首先,你需要安装 typer 库,可以使用以下命令在命令行中安装它

pip install typer

3

   

基本用法

安装完成后,你可以开始编写代码。让我们从一个简单的示例开始,创建一个命令行应用程序,用于添加和列出待办事项。

import typerapp = typer.Typer()@app.command()
def add_task(task: str):# 在这里实现添加任务的逻辑typer.echo(f"添加任务:{task}")@app.command()
def list_tasks():# 在这里实现列出任务的逻辑tasks = ["任务1", "任务2", "任务3"]typer.echo("待办事项列表:")for task in tasks:typer.echo(task)if __name__ == "__main__":app()

在这个例子中,我们首先导入了 typer 库,并创建了一个 Typer 对象,命名为 app,然后,我们使用 @app.command() 装饰器定义了两个命令函数:add_task 和 list_tasks。

add_task 函数用于添加任务。它接收一个名为 task 的参数,表示要添加的任务内容。在函数体内,你可以实现添加任务的逻辑,在这个例子中,我们只是简单地打印出要添加的任务。

list_tasks 函数用于列出任务。在函数体内,你可以实现列出任务的逻辑,在这个例子中,我们只是简单地创建了一个包含一些示例任务的列表,并使用 typer.echo 函数将它们打印出来。

最后,我们在 main 中调用 app() 方法。

现在,你可以在命令行中运行这个脚本,并使用 add_task 和 list_tasks 命令来添加和列出任务。例如:

python test.py add-task "购物"
python test.py list-tasks

程序输出如下

(notes) PS D:\Works\Gogs\Notes> python.exe test.py add-task "购物"
添加任务:购物(notes) PS D:\Works\Gogs\Notes> python.exe test.py list-tasks
待办事项列表:
任务1
任务2
任务3

通过这个简单的示例,你可以看到使用 typer 库创建命令行应用程序是多么简单和直观。你只需要定义命令函数,并使用 @app.command() 装饰器将它们与 Typer 对象关联起来。typer 库会自动处理命令行参数的解析和帮助文档的生成,让你可以专注于实现功能逻辑。

7f1232e4fc5fb88b88a729adb0dced62.jpeg

当然,这只是 typer 库的基本用法。它还提供了许多其他功能,例如处理选项参数、自定义帮助文档、处理用户输入等,感兴趣的话,可以查阅 typer 库的官方文档以了解更多详细信息,地址 https://typer.tiangolo.com/ ( https://typer.tiangolo.com/ )。

4

   

免费社群

aafdcf0b48096e39c74504f52af69a2d.jpeg

18fb4ff3f56f98b3befeaec3f2afb586.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用MATLAB进行傅里叶变换

1、定义 T1;% 周期0-1 N20;% 最大谐波 k-N:N;% -20:20——-20表示a_(20)e^(j*20*w0*t) N1length(k);%N141 % ceil(N1/2)21%即21是N1的中位数tlinspace(0,T,100); Ntlength(t); ttlinspace(-4*T,4*T,1024); Nttlength(tt);2、原函数 w02*pi/T; % 0-T xt(t>T/4).* 1.0; fig…

嵌入式学习笔记(49)由I2C学通信时序

10.2.1什么是时序? 字面意思,时序就是时间顺序,实际上在通信中时序就是通信线上按照时间顺序发生的电平变化,以及这些变化对通信的意义就叫时序。 10.2.2 I2C总线空闲状态、起始位、结束位 (1)I2C总线上有1个主设备&#xff0c…

二叉树的顺序存储——堆——初识堆排序

前面我们学过可以把完全二叉树存入到顺序表中,然后利用完全二叉树的情缘关系,就可以通过数组下标来联系。 但是并不是把二叉树存入到数组中就是堆了,要看原原来的二叉树是否满足:所有的父都小于等于子,或者所有的父都…

2023年铷铁硼行业分析:低端供应过剩,高性能材料供应不足[图]

铷铁硼材料是一种Fe基磁性材料,主要由钕铁硼按一定比例组成的四方晶体结构,其中Fe元素约占总质量的三分之二,Nd元素约占总量的三分之一,而B等含量最少,约占1%。铷铁硼是现今磁性最强的永久磁铁,也是最常使用…

记录vue开发实例

封装的表格组件 <template><div><div style"width: 100%" v-if"showList"><el-table v-loading.lock"loading" :data"dataList":header-cell-style"{background: #F2FCFE,fontSize: 14px,color: #50606D}&…

sed 命令

sed是Stream Editor&#xff08;字符流编辑器&#xff09;的缩写&#xff0c;简称流编辑器。 sed 命令是一个面向行处理的工具&#xff0c;它以“行”为处理单位&#xff0c;针对每一行进行处理&#xff0c;处理后的结果会输出到标准输出stdout。sed 命令是很懂礼貌的一个命令&…

【微服务】七. http客户端Feign

7.1 基于Feign远程调用 RestTimeplate方式调用存在的问题 先来看以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http://userservice/user"order.getUserId(); User user restTemplate.getForObject(url,User.class);存在下面的问题&#xf…

世界前沿技术发展报告2023《世界信息技术发展报告》(六)网络与通信技术

&#xff08;六&#xff09;网络与通信技术 1. 概述2. 5G与光通讯2.1 美国研究人员利用电磁拓扑绝缘体使5G频谱带宽翻倍2.2 日本东京工业大学推出可接入5G网络的高频收发器2.3 美国得克萨斯农工大学通过波束管理改进5G毫米波通信2.4 联发科完成全球首次5G NTN卫星手机连线测试2…

SpringBoot, EventListener事件监听的使用

1、背景 在开发工作中&#xff0c;会遇到一种场景&#xff0c;做完某一件事情以后&#xff0c;需要广播一些消息或者通知&#xff0c;告诉其他的模块进行一些事件处理&#xff0c;一般来说&#xff0c;可以一个一个发送请求去通知&#xff0c;但是有一种更好的方式&#xff0c;…

【WinRAR】去除请购买WinRAR许可

新建rarreg.key文件 在WinRAR安装目录新建rarreg.key文件&#xff0c;文件内容如下: RAR registration datawncnUnlimited Company LicenseUID1b064ef8b57de3ae9b5264122122509b52e35fd885373b214a4a64cc2fc1284b77ed14fa2066ebfca6509f9813b32960fce6cb5ffde62890079861be57…

Win11右键恢复Win10老版本

Win11右键恢复Win10老版本 最近自己更新了windows11的OS,整体感觉都是不错的,但是就是每次右键菜单我都要再次点击下展开更多选项,这对追求极简主义的我,就是不爽, 手动恢复win10操作吧! 第一种:创建文件(简单快速) 1.新建一个resoreRightKey.reg文件,并在里面填入如下代码 W…

【系统架构】软件架构的演化和维护

导读&#xff1a;本文整理关于软件架构的演化和维护知识体系。完整和扎实的系统架构知识体系是作为架构设计的理论支撑&#xff0c;基于大量项目实践经验基础上&#xff0c;不断加深理论体系的理解&#xff0c;从而能够创造新解决系统相关问题。 目录 1、软件架构演化和定义 …

Python接口自动化测试 —— Selenium+pytest+数据驱动

主流自动化框架 selenium &#xff1a;web端自动化框架 &#xff0c;&#xff08;行业里面最核心的框架&#xff09; appium &#xff1a;手机app端框架 requests &#xff1a;接口测试 selenium 工具类封装 selenium提供了很多方法供我们去完成网页元素的操作&#xff0c; …

延迟队列

KEYS命令和SCAN命令都可以用于在Redis中查找匹配指定模式的键名&#xff0c;但它们之间有以下区别&#xff1a; 1. 阻塞 vs 非阻塞&#xff1a;KEYS命令是一个阻塞操作&#xff0c;它会遍历整个键空间来查找与给定模式匹配的键名。在执行KEYS命令期间&#xff0c;Redis服务器会…

Gitlab+Jenkins自动化部署,解放双手

项目打包 ​ 在部署项目前需要对源码进行打包&#xff0c;一个简单的SpringBoot项目默认是打包为jar包&#xff0c;也就是在pom.xml中的<packaging>jar</packaging>方式&#xff0c;当然也会有一些打包成war包方式&#xff0c;使用外置的Tomcat应用服务器部署war包…

【Redis】基础数据结构-quicklist

Redis List 在Redis3.2版之前&#xff0c;Redis使用压缩列表和双向链表作为List的底层实现。当元素个数比较少并且元素长度比较小时&#xff0c;Redis使用压缩列表实现&#xff0c;否则Redis使用双向链表实现。 ziplist存在问题 不能保存过多的元素&#xff0c;否则查找复杂度…

ArcGIS Engine:报错无法嵌入互操作类型“ESRI.ArcGIS.Geometry.EnvelopeClass”。请改用适用的接口。

此错误是由于尝试直接实例化ArcGIS COM组件的某些互操作类引起的。这在.NET Framework 4及更高版本中是不被推荐的。 为了解决此问题&#xff0c;你需要确保在工程的引用中将ArcGIS的互操作类型设置为“不嵌入”。 按照以下步骤操作&#xff1a; 在解决方案资源管理器中找到…

Python实现JavaScript中AES加密有关填充问题

1. 先展示一下JS端的格式&#xff08;没找到没混淆的。。。&#xff0c;将就看吧&#xff09; 2. 在python加密中是没有选择填充模式的&#xff0c;需要自己来填充 3. 对加密不懂的朋友可能跟我一样刚开始很懵逼&#xff0c;因为遇到的基本都是pksc7填充模式&#xff0c;但是网…

独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

各位CSDN的uu们你们好呀&#xff0c;今天依旧是小雅兰的51单片机的内容&#xff0c;内容主要是&#xff1a;独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位&#xff0c;下面&#xff0c;让我们进入51单片机的世界吧&#xff01;&a…

大数据技术标准推进委员会发布《地球大数据白皮书(2023年)》

导读 地球大数据的应用领域范围广阔&#xff0c;包括生态保护、自然资源管理、气象服务、城市规划、应急容灾等方面&#xff0c;但目前仍处于发展初期&#xff0c;面临着数据来源、结构多样&#xff0c;数据管理门槛高&#xff0c;数据应用场景复杂、落地方法论较少等痛点。如…