argparse 模块

argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
功能:主要用于编写命令行接口,对于程序所需要的参数,它可以进行正确的解析;可以自动的生成help和 usage信息,当程序的参数无效时,它可以自动生成错误信息。

import argparse                       # 导入模块
parser = argparse.ArgumentParser()    # 创建解析对象,ArgumentParser保存了所有必要的信息,用以将命令行参数							# 解析为相应的python数据类型
parser.add_argument()                 # 向该对象添加需要关注的命令行参数和选项,告诉ArgumentParser对象如何处理命令行参数
parser.parse_args()                   # 调用parse_args()方法进行解析ArgumentParser对象中保存的命令行参数,将参数解析为相应的数据类型并采取相应的动作
class argparse.ArgumentParser(prog=None,
				usage=None,
				description=None,
				epilog=None,
				parents=[],
				formatter_class=argparse.HelpFormatter,
				argument_default=None,
				conflict_handler='error',
				add_help=True,
				allow_abbrev=True)

prog:程序文件名
默认情况下,ArgumentParser对象使用sys.argv[0]来决定如何在help信息中显示程序的文件名。
usage: 程序使用说明
默认情况下,ArgumentParser对象会根据它所包括的参数来自动的生成使用说明
description:程序目的说明
ArgumentParser对象会使用参数description来说明程序的用途以及目的。
epilog :程序说明后记
在参数描述信息之后添加额外的信息
parents :父对象列表
parsers会共享很多参数,为了避免参数的重复定义,可以定义一个包涵共享参数的parent_parser。当定义需要共享参数的ArgumentParser对象child_parser时,可以通过参数parent把共享参数传递给child_parser,只需要ArgumentParser对象的参数parent=[parent_parser]即可。注意,parent参数的值是一系列父对象的列表。
formatter_class :格式化类,用以说明显示格式
argument_default:参数的默认值
一般情况下,参数的默认值通过add_argument()方法或者set_default()方法来设定。有时候,我们可以通过参数argument_default设定ArgumentParser对象级别的默认值。
conflict_handler :冲突处理
add_help :是否显示帮助信息
默认情况下,ArgumentParser对象会自动生成-h/–help选项。
allow_abbrev: 是否支持缩写
当命令行参数字符串比较长时,可以通过指定allow_abbrev=True来使用长字符串参数的缩写进行参数引用
这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,会打印这些描述信息,一般只需要传递description参数

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

name or flags: 参数名或者参数标识,必须作为add_argument()方法的第一个参数
带-的为可选参数;不带-的为必选参数
action:参数的处理方法
‘store’ - 存储参数的值。即在parser_args()方法返回的Namespace对象中添加属性,并设定它的值;‘store_const’ - 将命令行参数的值设定为参数const指定值;‘store_true’ and and ‘store_false’ - 将命令行参数的值设定为True或者False‘;append’ - 将命令行参数的值设定为一个列表,它可以用来处理同一个命令行参数出现多次的情况;‘count’ - 命令行参数的出现次数;‘help’ - 命令行参数的帮助信息;‘version’ - 和参数version用来说明相应的版本信息。
nargs:参数的数量
一般情况下,每个命令行参数只与一个动作相联系,参数nargs可以让多个参数与一个动作都联系,即一个动作可以处理多个参数。一般用通配符表示,N :参数的绝对个数(例如:3); ‘?’ 0或1个参数; ‘*’ 0或所有参数;’+’ 所有,并且至少一个参数
const:参数的常量值
default:参数的默认值
type:参数的数据类型,可以是任意Python支持的数据类型
choices:参数的取值范围 ,一般是一个列表
required:参数是否可以忽略不写 ,仅对可选参数有效。如果设置了required=True,则在实际运行的时候不设置该参数将报错。
help :参数的说明信息,可以通过 -h/–help来显示。
在实现帮助信息的时候,help参数的值可以给使用工具的人提供该参数是用来设置什么的说明,对于大型的项目,help参数和很有必要的,不然使用者不太明白每个参数的含义,增大了使用难度。
metavar:参数在说明信息usage中的名称
当ArgumentParser生成帮助信息时,它需要指定所需要参数的值。默认情况下,ArgumentParser使用dest的值作为每个参数的值。对于必选参数来说,直接使用dest的值 作为每个参数的值,对于可选参数来说,使用dest的值的大写形式作为每个参数的值;可以通过metavar来修改参数在帮助信息中显示值。metavar只改变参数在帮助信息中的显示值,parse_args()返回的Namespace对象中的属性的名依然由dest决定。
dest:对象的属性名
绝大部分的ArgumentParser动作为parse_args()方法返回的Namespace对象的属性进行赋值,而属性的名称是由参数dest决定的。对于必选参数来说,dest默认等于必选参数的字面值。对于可选参数来说,dest的值根据-s/–string来推定:优先选择长字符串,具体的方法是:把字符串两侧的-删掉,字符串中间的-转换为_。
常设置的参数有name or flags,nargs,default,type,help

args = parser.parse_args()

通过调用parse_args()来解析ArgumentParser对象中保存的命令行参数:将命令行参数解析成相应的数据类型并采取相应的动作,它返回一个Namespace对象。具有两个属性:integers和accumulate,前者是一个整数集合,后者根据命令行参数的不同,代表不同的函数.在实际的python脚本中,parse_args()一般并不使用参数,它的参数由sys.argv决定。

参考博客:https://blog.youkuaiyun.com/u013946404/article/details/78188266
https://docs.python.org/3/library/argparse.html
http://vra.github.io/2017/12/02/argparse-usage/
https://blog.youkuaiyun.com/chengxuyuanyonghu/article/details/59716405

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值