Python argparse模块详解

2023-05-16

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。
官方文档中讲到的,本文基本都提到了,但只是简要记录,如果需要深入理解,可查看原文。
https://docs.python.org/3/library/argparse.html

使用步骤

import argparse                     # 导入模板

parser = argparse.ArgumentParser()  # 创建parser

parser.add_argument()               # 添加参数

args = parser.parse_args()          # 参数解析

ArgumentParser对象

class argparse.ArgumentParser(
    prog=None,                  # 设定程序名称 (defaul: sys.argv[0])
    usage=None,                 # 替换默认的Usage信息
    description=None,           # 程序简要信息说明(参数说明前)
    epilog=None,                # 附加信息说明(参数说明后)
    parents=[],                 # 继承父解析器(parser)
    formatter_class=argparse.HelpFormatter,     # 自定义帮忙信息显示格式(4种)
    prefix_chars='-',           # 参数前缀符号(默认为-,如:-h/--help)
    fromfile_prefix_chars=None, # 从文件中引用参数(与在命令行直接写作用一致,解决参数过多的情况)
    argument_default=None,      # 可设置argparse.SUPPRESS阻止默认参数默认值
    conflict_handler='error',   # 参数冲突处理
    add_help=True,              # 帮助信息中默认添加"-h, --help"描述
    allow_abbrev=True           # 允许参数缩写
)

add_argument()方法

ArgumentParser.add_argument(
    name or flags...    # 选项的名称或列表,例如:foo/-f/--foo
    [, action]      # 采取的基本操作
                        store(默认)         存储参数值
                        store_const        使用该字符串选项时,取用const值
                        store_true         使用该字符串选项时,参数值置为True
                        store_false        使用该字符串选项时,参数值置为False
                        append             同一个命令行中多次使用该字符串选项时,以追加的方式将值添加到list中
                        append_const       将多个字符串选项的const值合并到一个list
                        count              统计选项出现的次数 (如:"-vvv",则最终值为3help               parser默认会添加一个help action。(一般不用理会)
                        version            打印版本信息
                        也可以自定义action类
    [, nargs]       # 该参数值要求的数量
                        数值       指明参数个数
                        ?         提供了参数则取参数值;
                                    无参数但声明了选项字符串则取const值;
                                    无参数也未声明选择字符串则取default值
                        *         所有参数存入list
                        +*类似,但参数个数不能为空
                        argparse.REMAINDER  原封不动的记录参数到list中,通常用于将这些参数传递到其它的命令行工具。
    [, const]       # action/nargs部分要求的常值
                        1、当action="store_const"或者"append_const"时需要设置
                        2、当选项为(-f/--foo),nargs='?',同时未提供具体参数时,取用该值。
    [, default]     # 参数默认值
    [, type]        # 参数类型(内建参数或者函数,也可是自定义函数)
    [, choices]     # 允许的参数值(白名单),tuple/range
    [, required]    # 选项是否必须,设置为True表示选项必填。
    [, help]        # 参数说明,可以用其它类似 %(prog)s 格式调用prog值;可设置argparse.SUPPRESS使该选项在帮助信息中不可见。
    [, metavar]     # 定义参数在Usage信息中的名称
    [, dest]        # 解析后的属性名称
)

自定义action

class argparse.Action(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)

parse_args()方法

#args=None, 程序将sys.argv作为参数代入
args = parse.parse_args()              

#给args赋值,跳过sys.argv,主要用于测试工作,避免每次运行都输入冗长的参数。
args = parser.parse_args(['1', '2', '3', '4'])

# namespace=custom_class,将属性分配到一个已经存在的对象中。
parser.parse_args(args=['--foo', 'BAR'], namespace=custom_class99)

例子讲解

下面我们通过一个例子来进行讲解说明

我们可以看到上面的第二个步骤,parser = argparse.ArgumentParser()

它的作用就是:当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,会打印这些描述信息,一般只需要传递description参数。

下面会有例子输出,首先给出代码:

#-*- coding: UTF-8 -*-
import argparse   #步骤一

def parse_args():
    """
    :return:进行参数的解析
    """
    description = "you should add those parameter"                   # 步骤二
    parser = argparse.ArgumentParser(description=description)        # 这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,
                                                                     # 会打印这些描述信息,一般只需要传递description参数,如上。
    help = "The path of address"
    parser.add_argument('--addresses',help = help)                   # 步骤三,后面的help是我的描述
    args = parser.parse_args()                                       # 步骤四          
    return args

if __name__ == '__main__':
    args = parse_args()
    print(args.addresses)            #直接这么获取即可。

上面四个步骤已经分别对应上了,当我们在命令行敲入:

python arg.py -h 

输出提示为:
在这里插入图片描述

如何获得命令参数值

我们可以直接通过args.addresses获得它的参数值。

当我们敲入python arg.py --addresses this-is-parameter-of-addresses 命令时

会输出this-is-parameter-of-addresses

参考链接:
https://link.zhihu.com/?target=http%3A//blog.xiayf.cn/2013/03/30/argparse/
https://docs.python.org/3/library/argparse.html#module-argparse (官网链接)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python argparse模块详解 的相关文章

随机推荐

  • 2018年App测试流程及要点梳理

    先说说 xff0c 为什么要给大家梳理App测试流程和要点呢 xff1f 主要是缘于有太多同学咨询相关App测试的问题 xff0c 回答的次数多了 xff0c 就不想打字了 xff0c 还不如这样全部帮你们整理好 xff0c 希望各位看到的
  • 毕业设计--球上自平衡机器人

    目录 前言 一 机器人原理分析 二 控制器设计 三 程序部分 四 硬件清单 五 电路设计 六 结构设计 七 总结与展望 总结 展望 2021 8 18更新 xff1a 看到评论区很多人对这个机器人比较感兴趣 xff0c 把之前挖好的坑填一下
  • ROS入门之CmakeList.txt详讲

    本文为进来学习的总结 xff0c 记录了学习CmakeList txt文档的各个步骤 xff0c 适合从零开始理解CmakeList txt xff0c 可能存在错误之处 xff0c 望批评指正 0 Cmake的起源 为什么有CmakeLi
  • 2 如何给Gazebo中的仿真机械臂添加一个力传感器?

    1 你得有一个仿真机械臂 简单地说你首先的拥有一个能够在Gazebo当中使用的机械臂的URDF文件 xff0c 必须要包含visual collision和inertial三大标签 出于个人习惯 xff0c 这里直接使用UR官方提供的UR5
  • C#学习之事件的本质

    在注册事件时 xff0c 使用EventHandler委托 xff1b 摘要 表示将用于处理不具有事件数据的事件的方法 参数 sender 事件源 e 不包含事件数据的对象 public delegate void EventHandler
  • ..\OBJ\USART.axf: Error: L6218E: Undefined symbol I2C_CheckEvent (referred from oled_i2c.o).

    OBJ USART axf Error L6218E Undefined symbol I2C CheckEvent referred from oled i2c o OBJ USART axf Error L6218E Undefined
  • React 应用中的异步数据请求----fetch,以及fetch的优缺点

    React 应用中的异步数据请求 fetch 与Vue js一样 xff0c React官方也没有提供服务器端接口异步请求方案 xff1b 可以使用第三方的axios模块 xff0c 或者H5新增的原生技术 xff1a fetch 抓取 有
  • hmdb51数据集,视频+标签

    目录 视频下载链接 标签下载 hmdb介绍 其它 用于行为识别还需 帧标注 xff08 rawframe annotation xff09 视频标注 xff08 video annotation xff09 目录 视频下载链接 标签下载 h
  • vscode 连接服务器(Ubuntu系统),安装anaconda上运行深度学习代码

    目录 VSCODE的官网 Visual Studio Code Code Editing Redefined 1 安装 Romote SSH 2 添加服务器 3 进入服务器 4进入服务器文件 5 在Ubuntu上安装anconda xff0
  • nohub 和 & 在linux上不间断后台运行程序

    1 nohub xff08 没安装的要先安装 xff09 用途 xff1a 不挂断地运行命令 语法 xff1a nohup Command Arg amp 无论是否将 nohup 命令的输出重定向到终端 xff0c 输出都将附加到当前目录的
  • 《30天自制操作系统》:值得推荐的一本好书

    自己编写一个操作系统 xff0c 是许多程序员的梦想 也许有人曾经挑战过 xff0c 但因为太难而放弃了 其实你错了 xff0c 你的失败并不是因为编写操作系统太难 xff0c 而是因为没有人告诉你那其实是一件很简单的事 那么 xff0c
  • NTU RGB+D 120 划分训练集和测试集,生成标签文件。

    NTU RGB 43 D 120 总共有120类和114 480个样本 大小约为262G 包括 RGB视频分辨率为1920x1080 xff0c 深度图和IR xff08 红外 xff09 视频的分辨率均为512x424 xff0c 3D骨
  • 7z.001压缩包解压方法。(Window+Linux)

    之前遇到过的问题 xff1a Open ERROR Can not open the file as 7z archive 解决 xff1a 1 分卷文件需合并成一个7z压缩文件 1 1 如下所示是一个7z 结尾的文件 xff0c 对它的解
  • Linux 服务器上传下载文件到阿里网盘

    1 查看Linux系统架构 dpkg print architecture 2 下载安装 xff08 根据系统版本安装 xff09 2 1下载地址 https github com tickstep aliyunpan releases 2
  • CondaEnvException: Pip failed 或 Could not find a version that satisfies the requirement 问题

    1 错误实例 xff08 Could not find a version that satisfies the requirement imageio 61 61 2 27 0 xff09 2 解决方法 2 1 若对imageio的版本要
  • Linux中系统盘空间不足和显存没有释放问题

    1 系统盘空间不足 以下两个是可以直接删除 xff0c 不影响系统运行的目录 xff0c 所以首先直接删除 du sh root miniconda3 pkgs amp amp rm rf root miniconda3 pkgs cond
  • Ubuntu KCF 代码运行

    最近刚接触kcf xff0c 在Ubuntu上运行代码 xff0c 碰到一些问题 xff0c 借鉴了网上其他人的方法 xff0c 简单记录一下过程 KCF代码下载 KCF的代码可以去作者的网站去下载 xff1a http www robot
  • PADS学习笔记之绪论

    学习目的 在学校里的时候使用一直都是AD xff0c 现在即将毕业了 xff0c 来公司实习之后发现基本不用AD xff08 可能是怕收到律师函 xff09 xff0c 公司主要用的是PADS xff0c 某些项目也会用到cadence 虽
  • 软件工程中的框架

    什么是框架 框架 Framework 是构成一类特定软件可复用设计的一组相互协作的类 框架规定了你的应用的体系结构 它定义了整体结构 xff0c 类和对象的分割 xff0c 各部分的主要责任 xff0c 类和对象怎么协作 xff0c 以及控
  • Python argparse模块详解

    argparse是python用于解析命令行参数和选项的标准模块 xff0c 用于代替已经过时的optparse模块 官方文档中讲到的 xff0c 本文基本都提到了 xff0c 但只是简要记录 xff0c 如果需要深入理解 xff0c 可查