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

news2024/11/24 11:43:35

1

   

简介

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

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

2

   

安装

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

pip install typer

3

   

基本用法

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

import typer


app = 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.coloradmin.cn/o/1068607.html

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

相关文章

Qt元对象系统 day4

Qt元对象系统 day4 元对象 元对象系统是一个基于标准C的扩展,为Qt提供了信号与槽机制、实时类型信息、动态属性系统。元对象可以操作、创建、描述或是执行其他对象,元对象又称为基对象元对象组成 QObject: QT 对象模型的核心,绝…

2023年9月:比特币逆势崛起!全球市场暴跌中的优异表现引人瞩目!

比特币在 9 月份上涨,而许多传统资产遭受了重大损失,凸显了加密货币的多元化特性。全球市场的压力似乎源于政府债券收益率上升和油价上涨。 随着比特币链上指标在本月的改善,强劲的基本面发挥了关键作用。稳定币市值在去年下降后趋于稳定&am…

RDkit的安装

1.一定要以管理员模式运行anaconda 2.用Anaconda创建一个新的虚环境 conda create -n my-rdkit python3.63.(进入)虚环境 #windows conda deactivate4.安装 conda install -c rdkit rdkit # 解释: -c 是选择channels, 选择从哪里下载, 第一个rdkit是通道,第二个是我们需要的…

SaaS和CRM软件系统间的关系

CRM系统和SaaS的概念是很多企业并不熟知的,CRM的字眼也是在数字化转型的浪潮下才渐渐出现在大家的眼前,让更多人认识到数字化工具的作用,但你清楚CRM系统和SaaS的关系吗? 什么是SaaS?SaaS可以理解为一种服务方式。厂商…

如何做好sop流程图?sop流程图用什么软件做?

5.如何做好sop流程图?sop流程图用什么软件做? 建立标准作业程序sop已经成为企业进步和发展的必经之路,不过,很多刚刚开始着手搭建sop的企业并不知道要如何操作,对于如何做sop流程图、用什么软件做sop流程图等问题充满…

数据中心负载测试中常见的挑战和解决方案有哪些?

数据中心负载测试中常见的挑战一个是搭建真实的测试环境,需要考虑到数据中心的规模、硬件设备、网络拓扑等因素,以确保测试的准确性和可靠性。在进行负载测试时,需要合理管理资源,包括服务器、存储设备、网络带宽等,以…

Selenium进行无界面爬虫开发

在网络爬虫开发中,利用Selenium进行无界面浏览器自动化是一种常见且强大的技术。无界面浏览器可以模拟真实用户的行为,解决动态加载页面和JavaScript渲染的问题,给爬虫带来了更大的便利。本文将为您介绍如何利用Selenium进行无界面浏览器自动…

C++ — 指针和数组的关系?

在本文中,您将了解数组与指针之间的关系,并在程序中有效地使用它们。 指针是保存地址的变量。指针不仅可以存储单个变量的地址,还可以存储数组单元的地址。 看以下示例: int* ptr; // 定义指针变量ptr int a[5]; ptr &a[2…

关于JDK于JRE路径配置问题

今天在配置tomcat时发现,无法找到jre的路径,在网上找了半天,才知道,JDK11版本之后,jre的路径默认和JDK路径一致,JDK11之后的文件夹中不再包含jre文件夹,由此在配置JRE环境变量时,只需…

194、SpringBoot --- 下载和安装 Erlang 、 RabbitMQ

本节要点: 一些命令: 小黑窗输入: rabbitmq-plugins enable rabbitmq_management 启动控制台插件 rabbitmq-server 启动rabbitMQ服务器 管理员启动小黑窗: rabbitmq-service install 添加rabbitMQ为本地服务 启动浏览器访问 htt…

【微信小程序开发】一文学会使用CSS样式布局与美化

引言 在微信小程序开发中,CSS样式布局和美化是非常重要的一部分,它能够为小程序增添美感,提升用户体验。本文将介绍如何学习使用CSS进行样式布局和美化,同时给出代码示例,帮助开发者更好地掌握这一技巧。 一、CSS样式布…

基于虚拟同步发电机的光伏混合储能并网系统Simulink仿真

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【算法刷题】【反转链表】给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。

题目 解决: import java.util.*;/** public class ListNode {* int val;* ListNode next null;* public ListNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改&#x…

Python 绘制玫瑰花

首先需要下载 matplotlib 模块 代码源码 from matplotlib import cm import matplotlib.pyplot as plt import numpy as npfig plt.figure() ax fig.add_subplot(projection3d) [x, t] np.meshgrid(np.array(range(25)) / 24.0, np.arange(0, 575.5, 0.5) / 575 * 17 * n…

【运筹学】整数规划建模技巧

在整数规划建模中,经常会使用到0-1变量来辅助建模,将模型表述为IP模型或BIP模型,下面是一些常见的整数规划建模技巧 使用辅助0-1变量实现“非此即彼”约束 如下图所示,有两条约束,希望只有其中一条起到约束的作用&am…

CVE-2023-4120:百卓智能Smart多业务安全网关智能管理平台SQL注入漏洞复现

文章目录 百卓智能Smart多业务安全网关智能管理平台SQL注入CVE-2023-4120 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 百卓智能Smart多业务安全网关智能管理平台SQL注入CVE-2023-4120 复现 0x01 前言 免…

漏刻有时物联网环境态势感知大数据(设备列表、动态折线图)

物联网环境下的态势感知是指对物联网环境中的各种要素进行全面、实时、准确的监测、分析和预测,以实现网络态势的全面掌握和安全威胁的及时响应和处理。具体而言,态势感知以物联网环境为基础,利用各类传感器、数据采集设备和其他相关工具,对物联网设备、资产、数据流等进行…

Windows批处理

目录 echo off:关闭命令的回显功能,这样在执行脚本时不会显示每条命令的具体执行过程。建议将此行放在批处理脚本的首行。 rem:用于添加注释,后面可以跟上注释内容。注释的作用是对脚本进行说明或提醒,不会被执行。 …

大数据软件项目的应用行业

大数据软件项目可以应用于各种不同的行业,以帮助组织更好地理解和利用其数据资产,从而做出更明智的决策、提高效率并推动创新。以下是一些主要行业,大数据软件项目可以发挥重要作用的示例,希望对大家有所帮助。北京木奇移动技术有…

BaseQuickAdapter触底刷新实现

触底刷新实现 使用BaseQuickAdapter,在适配器中实现 LoadMoreModule即可,如下加上即可,无需多写代码 以下为分页实现: 视图中 // 获取加载更多模块loadMoreModule blogAdapter.getLoadMoreModule();loadMoreModule.setOnLoadMo…