argparse命令行参数解析模块

前言

许多demo用argparse封装模型训练的参数,然后在执行的脚本后接自定义的参数,非常好用。但需要以debug方式调试训练的主脚本,且输入自定义参数,该如何做——解决方案:调用parse_args时传入参数列表

argparse模块主要包含一个类及两个方法:ArgumentParser类、add_argument方法与parse_args方法,下面按顺序记录其主要用法。

ArgumentParser Class

ArgumentParser实例会封装传入脚本命令行参数的所有信息,其签名如下所示:

ArgumentParser(prog=None, usage=None, description=None, epilog=None, 
 		parents=[], formatter_class=argparse.HelpFormatter, 
		prefix_chars='-', fromfile_prefix_chars=None, 
		argument_default=None, conflict_handler='error',
		add_help=True, allow_abbrev=True)

所有参数需以关键字形式传递,各参数的简要含义如下:

  • prog参数指定程序名称,默认为sys.argv[0]。
  • usage参数指定帮助信息的usage的名称。
  • desciption参数指定ArgumentParser的描述信息,该信息显示在帮助信息的选项部分之前。
  • epilog参数指定描述信息,该信息显示在帮助信息中的选项部分之后。
  • parents参数值为ArgumentParser实例组成的列表,列表中ArgumentParser实例的可选参数会成为当前参数解析器的组成部分。
  • formatter_class指定帮助信息的格式。
  • prefix_chars指定选项的前缀,帮助参数解析器识别可选参数的名称。
  • fromfile_prefix_chars指定从文件中读取选项前缀的标注符号。
  • argument_default指定解析器全局的默认值。
  • conflict_hander指定冲突的解决方式。
  • add_help会指定解析器默认添加“-h”选项,通过python my_script.py --help可参看帮助信息。
  • allow_abbrev指定允许使用简称。

add_argument method

创建ArgumentParser解析器后,通过add_argument方法可以为解析器添加自定义的参数。add_argument的签名如下:

add_argument(name or flags...[, action][, nargs][, const]
		[, default][, type][, choices][, required]
		[, help][, metavar][, dest])

name_or_flags

值为变量名称,或者选项名称。选项名称默认以“-”标识符号标识,当ArgumentParser实例调用parse_args方法时,解析“-”标识符的名称为选项参数,并将相应的值赋值给选项参数,剩下的值依次赋值给位置参数,位置参数就是单纯的变量名称,不包含前缀标识符“-”。
在这里插入图片描述

action

action参数非常重要,其指定当解析器遇到定义的选项或者位置变量时,应该怎样处理命令行参数,常用选项值如下:

  • “store”:为默认值,表示仅将命令行参数值赋值为选项或者位置参数。

  • “store_const”: 存储const关键字参数指定的值,而非命令行参数值。

  • “store_true” | “store_false”:“store_const”的特殊形式,“store_true”是const关键词参数的值为True,与action='store_const’的结合,default关键词参数的值为False,是反向的; “store_false”是const关键词参数的值为False,与action='store_const’的结合,其default关键词参数的值为True。
    在这里插入图片描述

  • “append”:存储一个列表,将对应的值append到列表尾部。

  • “append_const”: 存储一个列表,将const关键词参数指定的值添加到列表尾部。
    在这里插入图片描述

  • “count”:计数选项出现的次数。

可以继承Action类,自定义__init__和__call__方法, 实现自定义action行为。

nargs

默认是将每一个命令行参数对应给一个选项或者位置参数,通过nargs参数可以指定将任意个命令行参数对应给特定的选项或者位置参数。常用参数值为:

  • “N”:一个正整数值,表示数量。
  • “?”:消费0个或者1个命令行参数,当不传递命令行参数时,会从const关键词或者default关键词处取值。
  • “*”: 消费任意多个命令行参数,这些参数将以列表的形式存储。
  • “+”:消费1个或者任意多个命令行参数,以列表形式存储。
    注意当指定nargs=1时候,`是以列表形式存储一个参数值``。

const

指定一个常量,该常量将用于action=‘store_const’、action=‘append_const’或者nargs=?场景。

default

指定默认值,当调用时没有在传递命令行参数,则取默认值。

type

默认命令行参数时str类型,通过type可以指定为任意类型,其值是任意可调用对象,包括python内置的格式及内置函数

choices

指定一个容器,包含若干个可选参数值,定义的选项或者位置参数的取值只能从指定范围内选取。

required

指定选项是否为必须。

help

指定帮助信息。

dest

指定属性名。可以为不同选项指定相同的属性名。
 

parse_args method

parse_args将定义的参数转换成对象,并将这些对象作为命名空间的属性。签名为:

ArgumentParser.parse_args(args=None, namespace=None)
  • args取值为一个列表,默认值为sys.argv。
  • namespace默认为一个新的空的命名空间。

因此可以在调试模式下,当parser_args方法中输入位置参数|选项及对应的值,则解析器会将指定的参数值存储到唯一的命名空间中。
 

参考资料

argparse

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值