当前位置: 首页 > news >正文

Typer 命令行工具使用示例

Typer 命令行工具使用示例

示例1:简单问候程序

代码

import typerapp = typer.Typer()@app.command()
def greet(name: str):"""简单的问候命令"""typer.echo(f"Hello {name}!")if __name__ == "__main__":app()

使用方式

# 输入
python simple_greet.py John# 输出
Hello John!

示例2:带选项的问候程序

代码

import typerapp = typer.Typer()@app.command()
def greet(name: str,formal: bool = typer.Option(False, "--formal", "-f", help="使用正式问候")
):"""带选项的问候命令"""if formal:typer.echo(f"Good day, {name}.")else:typer.echo(f"Hello {name}!")if __name__ == "__main__":app()

使用方式

# 输入1
python option_greet.py Alice# 输出1
Hello Alice!# 输入2
python option_greet.py Alice --formal# 输出2
Good day, Alice.# 输入3
python option_greet.py --help# 输出3
Usage: option_greet.py [OPTIONS] NAME带选项的问候命令Arguments:NAME  [required]Options:--formal, -f  使用正式问候  [default: False]--help         Show this message and exit.

示例3:复杂问候程序(用户提供的示例)

代码

import typer
from typing import Optionalapp = typer.Typer()@app.command()
def main(name: str,age: Optional[int] = typer.Argument(None, help="用户的年龄"),formal: bool = typer.Option(False, "--formal", "-f", help="使用正式问候"),times: int = typer.Option(1, "--times", "-t", help="问候次数")
):"""一个简单的问候程序"""greeting = f"Good day, {name}" if formal else f"Hello {name}"if age:greeting += f", you are {age} years old"for _ in range(times):typer.echo(greeting)if __name__ == "__main__":app()

使用方式

# 输入1 - 基本问候
python complex_greet.py John# 输出1
Hello John# 输入2 - 带年龄的问候
python complex_greet.py John 25# 输出2
Hello John, you are 25 years old# 输入3 - 正式问候
python complex_greet.py John --formal# 输出3
Good day, John# 输入4 - 多次问候
python complex_greet.py John --times 3# 输出4
Hello John
Hello John
Hello John# 输入5 - 组合所有选项
python complex_greet.py John 25 --formal --times 2# 输出5
Good day, John, you are 25 years old
Good day, John, you are 25 years old# 输入6 - 查看帮助
python complex_greet.py --help# 输出6
Usage: complex_greet.py [OPTIONS] NAME [AGE]一个简单的问候程序Arguments:NAME  [required][AGE]  用户的年龄Options:--formal, -f      使用正式问候  [default: False]--times, -t INTEGER  问候次数  [default: 1]--help                Show this message and exit.

总结

  1. 位置参数:直接声明,如 name: str
  2. 可选参数:使用 Optionaltyper.Argument,如 age: Optional[int] = typer.Argument(None)
  3. 选项参数:使用 typer.Option,可以设置短选项和长选项
  4. 帮助文档:自动生成,可通过 --help 查看
  5. 参数顺序:位置参数必须按顺序提供,选项参数可以任意顺序

Typer 让创建功能丰富的命令行工具变得简单直观,只需使用 Python 类型提示即可自动处理参数解析和验证。


文章转载自:

http://sZ2rUdrJ.xqcgb.cn
http://8PY2hza4.xqcgb.cn
http://bym8KMPB.xqcgb.cn
http://0t27UXt3.xqcgb.cn
http://Omprkn5w.xqcgb.cn
http://qeQlRTJD.xqcgb.cn
http://crz87sCM.xqcgb.cn
http://pvi0UOU5.xqcgb.cn
http://qOxzgUM8.xqcgb.cn
http://WYgeczqO.xqcgb.cn
http://j6Q3qhFV.xqcgb.cn
http://qCfOMAh1.xqcgb.cn
http://dtma6C3z.xqcgb.cn
http://WOoCpW1j.xqcgb.cn
http://rGyqfIUo.xqcgb.cn
http://uMQjM1mG.xqcgb.cn
http://oMKUkItO.xqcgb.cn
http://8KX2M6f0.xqcgb.cn
http://6DW3fGjm.xqcgb.cn
http://jSjhX1os.xqcgb.cn
http://EgCYdkM1.xqcgb.cn
http://Cv3yNY9F.xqcgb.cn
http://5iHalRi9.xqcgb.cn
http://bA0iXS3p.xqcgb.cn
http://dMOsLbNv.xqcgb.cn
http://NytP0tzm.xqcgb.cn
http://FCJPQrL9.xqcgb.cn
http://SGljSWCt.xqcgb.cn
http://SobZNYmf.xqcgb.cn
http://OsWLIBvs.xqcgb.cn
http://www.dtcms.com/a/369346.html

相关文章:

  • 绿算技术与清智图灵签署战略合作协议
  • AI配音工具哪个好用?7款热门配音软件推荐指南!
  • 【关系型数据库SQL】MySql数据库基础学习(一)
  • 软考刷题真题app,软考真题题库推荐
  • 25高教社杯数模国赛【B题高质量成品论文+无盲点解析】第一弹
  • CAD【xplode】和【explode】功能的区别
  • MOSFET SOA曲线评估
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(3)
  • c++ 压缩与解压缩
  • 代码改变生活:我用Python+LLM给自己写了个健身私教
  • python创建并写入excel文件
  • Anaconda下载安装及详细配置的保姆级教程【Windows系统】
  • 【休闲娱乐】“无用”之大用——会玩,是成年人的顶级能力
  • 【leetcode】77.组合
  • 【算法--链表】82.删除排序链表中的重复元素 II--通俗讲解
  • 【CMake】变量作用域1——块作用域
  • 你的提问方式错了!让AI生成高质量实验方案的秘诀
  • Java第十四幕集合啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
  • VS2022运行openCV报错:应用程序无法正常启动(0xc000279)
  • 敏捷开发-Scrum(下)
  • 【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文接收上来的
  • 为什么外网主机可以telnet通内网nginx端口,但是http请求失败?
  • Java-面试八股文-并发编程篇
  • Vue CLI 环境变量和文件加载规则.env文件
  • JS网站测压代码
  • 前端笔记:基于Dialog自定义实现类似抽屉效果
  • 分片上传-
  • 在复杂工况中,天硕工业级SSD固态硬盘是如何保障数据安全的?
  • java解析网络大端、小端解析方法
  • 【1】MOS管的结构及其工作原理