Python 使用 argparse 开发命令行工具/获取命令行参数/子命令实现
一、大部分 Python 程序开发人员都知道可使用 sys.argv 获取在命令行中输入的参数,事实上我们可以进一步借助于另外一个 Python 内置库 argparse 来解析这些参数,并加入更多的功能。一些比较常用的第三方命令行解析工具
click: https://click.palletsprojects.com/en/7.x/
docopt: http://docopt.org/
二、这里简单介绍一下 argparse 的使用流程及在进行命令行工具开发时常用几个功能点
1、依赖库导入
import argparse
2、创建解析对象
parent_parser = argparse.ArgumentParser(usage="usage 信息", description="命令工具描述信息")
3、加入子命令
3.1 获取第一层子命令操作对象
sub_parser_manager = parent_parser.add_subparsers(title="title message", help="第一层子命令的整体帮助信息")
3.2 创建一个子命令
son_parser_1 = sub_parser_manager.add_parser("command_name", help="command help mesasge")
3.3 定义子命令的参数
# nargs 指明该参数可定义的数目,"?" 只允许 1 个或者 0 个;"*" 允许 0 个或者多个,此时解析参数时返回的是列表;"+" 最少需要一个
# type 解析出参数时返回的数据类型; dest 自定义属性接收解析出来的参数
son_parser_1.add_argument("--name", nargs="?", type=str, help="write yourrname", dest="name")
# 有时候我们并不需要输入某个参数的值(相当于内置的常量),可使用如下这种方式
son_parser_1.add_argument("--money", action="store_const", const=0, help="you are poor", dest="money")
3.4 将某个命令绑定函数
son_parser_1.set_defaults(func=test_func)
# 需要提前定义好目标函数
def test_func(*args, **kwargs):
print(args[0].name, args[0].money)
是否需要定义子命令可根据实际情况而定,如果不需要子命令,直接使用 parent_parser 调用 add_argument 定义参数即可,如果需要定义多层子命令,使用相应层次的 parser 调用 add_subparsers 得到子命令管理器后,调用 add_parser 继续添加子命令即可
4、解析参数
args = parent_parser.parse_args() # 返回一个 namespace 对象,该对象的属性里面包含了解析后得到的参数值
5、执行函数
# 执行函数功能(不同的子命令会自动指向到其绑定的函数)
if args.__contains__("func"):
args.func(args)
else:
# 如果没有绑定函数,进行其他处理操作
pass
当我仰望星空, 看见了涛涛江水, 闻到了人声鼎沸;可当我蓦然回望,再也触摸不到那逝去的时光,再也看不到那夕阳下的少年!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2018-07-28 django 自定义中间件 middleware
2018-07-28 django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
2018-07-28 python脚本 读取excel格式文件 并进行处理的方法