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

python进阶

argparse 解析命令行参数

        argparse 是 Python 标准库中的一个模块,用于解析命令行参数,提供用户友好的接口来定义、解析和处理命令行输入的参数。

基本用法

  1. 创建 ArgumentParser 对象
    首先需要实例化 ArgumentParser 对象,用于定义和解析参数:

    import argparse
    parser = argparse.ArgumentParser(description='描述脚本的功能')
    
  2. 添加参数
    使用 add_argument() 方法定义参数:

    parser.add_argument('--input', help='输入文件路径', required=True)
    parser.add_argument('--output', help='输出文件路径', default='output.txt')
    parser.add_argument('--verbose', help='显示详细日志', action='store_true')
    
  3. 解析参数
    调用 parse_args() 方法解析命令行参数:

    args = parser.parse_args()
    print(args.input)
    print(args.output)
    

参数类型

  1. 位置参数
    不带有 -- 前缀的参数,按顺序解析:

    parser.add_argument('input_file', help='输入文件')
    
  2. 可选参数
    带有 -- 前缀的参数,通常用于可选配置:

    parser.add_argument('--output', help='输出文件')
    

  3. 布尔标志
    使用 action='store_true'action='store_false' 定义布尔参数:

    parser.add_argument('--verbose', action='store_true', help='启用详细模式')
    

  4. 选择参数
    使用 choices 限制参数可选值:

    parser.add_argument('--mode', choices=['train', 'test'], help='运行模式')
    
  5. 参数类型转换
    使用 type 指定参数类型:

    parser.add_argument('--count', type=int, help='数量')
    

高级用法

  1. 子命令解析
    类似 git 的子命令模式,可以使用 add_subparsers()

    subparsers = parser.add_subparsers(dest='command')
    parser_train = subparsers.add_parser('train', help='训练模型')
    parser_train.add_argument('--epochs', type=int, help='训练轮数')
    
  2. 参数组
    使用 add_argument_group() 分组显示帮助信息:

    group = parser.add_argument_group('优化选项')
    group.add_argument('--lr', type=float, help='学习率')
    

  3. 互斥参数
    使用 add_mutually_exclusive_group() 定义互斥参数:

    group = parser.add_mutually_exclusive_group()
    group.add_argument('--verbose', action='store_true')
    group.add_argument('--quiet', action='store_true')
    

示例脚本

以下是一个完整的示例脚本,展示如何使用 argparse:

import argparsedef main():parser = argparse.ArgumentParser(description='处理输入和输出文件')parser.add_argument('--input', required=True, help='输入文件路径')parser.add_argument('--output', default='output.txt', help='输出文件路径')parser.add_argument('--verbose', action='store_true', help='显示详细日志')args = parser.parse_args()if args.verbose:print(f'输入文件: {args.input}')print(f'输出文件: {args.output}')if __name__ == '__main__':main()

使用帮助

运行脚本时,可以通过 -h--help 查看自动生成的帮助信息:

python script.py --help

输出类似:

usage: script.py [-h] --input INPUT [--output OUTPUT] [--verbose]描述脚本的功能options:-h, --help       show this help message and exit--input INPUT    输入文件路径--output OUTPUT  输出文件路径--verbose        显示详细日志

argparse 自动生成帮助信息,简化了命令行工具的开发流程。


文章转载自:
http://asuncion.apjjykv.cn
http://alme.apjjykv.cn
http://chromic.apjjykv.cn
http://afterthought.apjjykv.cn
http://buddhism.apjjykv.cn
http://brassiere.apjjykv.cn
http://amphitheatral.apjjykv.cn
http://azt.apjjykv.cn
http://balthazer.apjjykv.cn
http://antipathetic.apjjykv.cn
http://centromere.apjjykv.cn
http://beadsman.apjjykv.cn
http://antebrachium.apjjykv.cn
http://acidophile.apjjykv.cn
http://baronne.apjjykv.cn
http://bioengineering.apjjykv.cn
http://antacid.apjjykv.cn
http://agism.apjjykv.cn
http://centralia.apjjykv.cn
http://capper.apjjykv.cn
http://ascendant.apjjykv.cn
http://baroness.apjjykv.cn
http://adolf.apjjykv.cn
http://alimentotherapy.apjjykv.cn
http://chifforobe.apjjykv.cn
http://bellyband.apjjykv.cn
http://atom.apjjykv.cn
http://catechize.apjjykv.cn
http://auris.apjjykv.cn
http://choripetalous.apjjykv.cn
http://www.dtcms.com/a/281718.html

相关文章:

  • 145-变分模态分解VMD与平稳小波变换SWT信号降噪算法实现!
  • 4G模块 A7680通过MQTT协议连接到onenet(新版)
  • WebAPIs基本认知,DOM基础介绍
  • 基于Springboot+UniApp+Ai实现模拟面试小工具五:权限校验参数校验及日志功能实现
  • Ubuntu 22.04 安装 mysql-server与 postgreSQL 服务端
  • el-tooltip 快速滚动的时候出现残影如何解决 vue3
  • 30.安卓逆向2-frida hook技术-hook So文件(获取app加载的所有模块、导入函数、导出函数、hook SO函数)
  • 区块链发展史全景长图
  • 强化学习Reinforcement Learning
  • 基于Python的图像文字识别系统
  • Glide双内存缓存加载机制详细介绍
  • K型热电偶电动势以及温度对照表
  • 驱动开发系列61- Vulkan 驱动实现-SPIRV到HW指令的实现过程(2)
  • [Science]论文 视黄素与细胞修复
  • 2025-07-15通过边缘线检测图像里的主体有没有出血
  • IMU 能为无人机提供什么数据?
  • 【论文阅读】A Survey on Knowledge-Oriented Retrieval-Augmented Generation(3)
  • 移动端字体适配
  • 谷歌浏览器控制台如何切换中文
  • StampedLock分析
  • 链表的 哑结点的本质
  • Python 程序设计讲义(1):PyCharm 安装教程
  • WebView JSBridge 无响应问题排查实录 全流程定位桥接调用失效
  • 深度学习·目标检测和语义分割基础
  • 77、【OS】【Nuttx】【启动】caller-saved 和 callee-saved 示例:栈指针和帧指针(上)
  • Qt图形视图框架5-状态机框架
  • Springboot儿童认知图文辅助系统6yhkv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 再见吧,Windows自带记事本,这个轻量级文本编辑器太香了
  • 基于mybatis的基础操作的思路
  • C++-linux系统编程 8.进程(二)exec函数族详解