argparse模块用于python程序的参数解析,以下是其基本的介绍。
上面图片中讲述了模块的三个基本内容。
首先模块安装位置在/usr/lib64/python2.7/argparse.py,如果想学习一下脚本的具体内容,可以去相应路径下查看。
其次是软件的三个功能:一是解析参数、二是格式化输出、三是通过构建的解析器自动解析参数
第三部分就是模块的应用示例,是本次重点介绍的部分。
构建解析对象
parser =argparse.ArgumentParser(description='sum the integers at the command line')
#构建了一个解析对象,描述信息为sum the integers at the command line获取参数的和
#构建对象时还有很多参数,可以参考帮助信息(help(argparse))
当一个解析器构建完成后,下一步要做的就是要添加各种参数,用来承载或获取通过命令行传进的参数。
添加参数
parser.add_argument('integers',metavar='int', nargs='+', type=int,help='an integer to be summed'
parser.add_argument('--log', default=sys.stdout, type=argparse.FileType('w'),help='the file wherethe sum should be written')
在添加参数时,需要根据不同的参数选用不同的设置方法,具体的方法包括可选标识符, 参数应用名称dest,参数的个数nargs,参数默认值default,参数的类型type,指定参数范围choices、帮助信息help以及输出时的参数名称metavar),下面对其一一进行阐述。
参数设定
脚本内容
输出形式
从上面一张图片可知主要有两种形式的参数,第一个是定位参数,不存在参数前导符,使用时直接输入参数值就好;第二种就是可选参数,存在可选标识符-h/--help,在输入参数时需要先输入标识符,然后才能赋值
参数引用
脚本内容
在参数定义时,每一个参数都会有一个dest名称,默认值为定义时--后面的字符,若没有定义可选,则为参数本身
该参数是后续调用时所用的名称,如脚本中的args.sum,调用时用的是-s这个参数默认的名称,也就是sum;若觉得默认参数不太合理,可以通过dest=str进行设定。
此时调用时就应该用args.num1,而不是args.i1,否则会出现Namespace不正确的错误。
choices指定输入范围
在默认情况下,参数可以随意使用,没有范围限制。但是在某些条件下需要规范用户的输入或缩小数据处理范围,就需要指定输入数据的范围,此时可以通过choices进行设定。
脚本内容
帮助信息
此时输出帮助信息中大括号中指定了输入范围,若输入的参数未在该范围,会出现错误信息。
此处有一点需要注意,官方说明信息中支出,choices指定的是一个数据集合,而不是一个范围,也就是说如果写[1,3],输入时只能输入1或者3,而不是1到3之间的任意数值
metavar指定输出信息名称
该参数指定的是帮助信息中参数标识符后面的内容,正常情况下,标识符后面会跟一个参数,该参数是标识符指定的参数本身,默认大写输出
设定参数
输出内容
从上面的图片中我们发现,默认输出的美观度不够,示例信息也不足,此时我们就可以通过metavar进行设置。
设定参数
输出内容
此处删掉了标识符后面的内容,也可以根据个人习惯或需求指定不同的名称。
nargs指定参数传参个数
默认情况下,每一个参数后面紧跟的一个参数就是其对应的数值或字符串。但是某些情况下,一个参数需要指定多个数值,此时可以通过nargs进行设定
脚本内容
帮助信息
此处在-i/--int参数后面,显示的时两个大括号指定的输入范围,对应其后面对应的两个参数
结果输出
从结果里可以看出,-i/--int对应的两个参数分别是2和3,输出的格式为列表,可以通过列表的切片操作拆分参数,其中args.int[0]=2,args.int[1]=3
action设定无参参数
默认情况下,参数在设定时需要指定参数对应的数值/字符串,而某些情况下,只需要显示或输入一个判断命令,不需要赋值,比如-h/--help未指定数值,而是直接输出帮助信息,此时可以用action来设定参数
脚本内容
运行结果
添加-q参数不影响结果的输出,也不会报错。这种参数实际上是bool参数,有true和false两种状态,至于该如何使用这种参数,需要根据具体情况进行拿捏
领取专属 10元无门槛券
私享最新 技术干货