//
Python中的参数解析argparse用法
//
在使用python写脚本的时候,我们经常会用到命令行解析包argparse,我们引入这个包之后,就可以对传入python的参数进行解析,得到我们想要的结果。
下面说说这个参数解析包的用法,大概分为如下几步:
1、import argparse,首先使用这行代码导入相应的模块。
2、初始化一个参数解析的实例
parser = argparse.ArgumentParser()
3、添加相应的参数
parser.add_argument(),这个函数特别丰富,包含很多内容,这里我们讲解比较简单的用法,其他的大家可以下去进行测试。
4、对参数进行解析
parser.parse_args()
5、对于意外的结果抛出异常
parser.error()
我们来看一段代码:
#encoding=utf-8
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--name', help='please input a name')
parser.add_argument('--age', help='please input a age')
parser.add_argument('--score', help='please input a score')
args = parser.parse_args()
if not args.name:
parser.error('No name, add --name')
if not args.age:
parser.error('No age, add --age')
if not args.score:
parser.error('No score, add --score')
name = args.name
age = args.age
score = args.score
print "name=",name,"age=",age,"score=",score
# 可以打印出最终存储的参数空间属性
print args
# 打印针对这个添加参数模块的使用方法
print parser.print_usage()
# 打印针对这个添加参数模块的使用帮助说明(此处会打印出使用方法)
print parser.print_help()
第5行中,我们创建了一个parser实例;
第6~8行,我们传递了name、age、score三个参数,其中,help后面的内容是参数的帮助信息
第9行是对参数进行解析。
第10~15行是对异常信息的一个捕获,如果没有输入参数,则会输出相应的相应字符串。
再往下就是赋值和打印过程了。
可以看到,我们可以使用--name --age --score的方法去调用这个脚本,需要注意的是这三个参数的顺序可以颠倒,不影响对应的值。
我们尝试一下上面脚本的执行结果:
E:\> python parser_test.py --score --age --name yeyz
name= yeyz age= score=
Namespace(age='26', name='yeyz', score='100')
usage: parser_test.py [-h] [--name NAME] [--age AGE] [--score SCORE]
None
usage: parser_test.py [-h] [--name NAME] [--age AGE] [--score SCORE]
optional arguments:
-h, --help show this help message and exit
--name NAME please input a name
--age AGE please input a age
--score SCORE please input a score
None
可以看到,我们的参数分别是:
--srore 100
--age 26
--name yeyz
这里参数的顺序和函数中参数的顺序并不一致,但是我们可以发现函数还是能成功解析到正确的结果。
打印出来:name=yeyz,age=26,score=100
紧接着,我们print args,打印出来了args中的所有值,在使用print parser.print_usage()打印出来了该函数的使用说明。
最后print parser.print_help()打印帮助项。
利用这种方法,当一个没有用过这个脚本的开发者直接执行这个脚本的时候,可以比较友好的给出脚本的使用方法,能够让你的脚本更加优雅,其实是一种不错的开发选择。
有帮助的话还希望点下再看哈