本模块主要为了方便实现命令行参数处理,或者分析命令行参数。
创建命令行参数分析器:
#python 3.4
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
print(parser)
结果输出如下:
ArgumentParser(prog='arg2.py', usage=None, description='Process some integers.', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
在这里,设置参数description为描述这个命令行处理对象主要做什么事情。
添加参数到分析器:
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
在想往命令行ArgumentParser对象里添加参数,需要使用函数add_argument(),这个函数会把这些参数怎么设置,怎么样运行的方式设置到对象里。后面通过调用函数parse_args()来使用这些参数的值,在这个例子里返回两个属性integers和accumulate,integers是一个包含所有整数的列表,accumulate属性将会是sum()的函数功能,如果输入参数--sum,默认是max()的功能。最后会调用分析函数parse_args(),如下:
parser.parse_args(['--sum', '7', '-1', '42'])
在函数parse_args()一般不输入参数,它自动地使用sys.argv参数,实现从脚本里获取命令行的参数。
class argparse.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)
创建一个ArgumentParser分析对象。
参数prog是程序的名称,默认是sys.argv[0]。
参数usage是描述本程程序的使用方法字符串。
参数description是在参数使用前面显示的字符串。
参数epilog是在参数使用后面显示的字符串。
参数parents是那些参数被包括的ArgumentParser列表。
参数formatter_class是定制的输出帮助类。
参数prefix_chars是参数前面定义的字符,默认是“-”。
参数fromfile_prefix_chars是定义命令行参数在文件里的前缀字符。默认是空。
参数argument_default是所有参数的缺省值。
参数conflict_handler是 解决冲突的处理策略。
参数add_help是添加 -h/-help选项给分析器,默认是True。
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
定义一个命令行参数。
参数name or flags是一个名称还是一个选项列表。
参数action是当遇到这个参数时怎么样处理。
参数nargs是指这个命令要消耗多少个命令行参数。
参数const是有常量的需求,但不需要读取的。
参数default是当命令在命令行里不存在时默认的值。
参数type是命令行参数转换为那一种Python类型。
参数choices是这个命令参数允许的值的容器。
参数required是命令参数是否可选。
参数help是描述这个参数是做什么事情的。
参数metavar是在使用说明里参数的名称。
参数dest是参数在分析之后产生的对象里的属性名称。
ArgumentParser.parse_args(args=None, namespace=None)
转换参数字符串为命令行对象,并把相关参数转换为属性。
参数args是直接给出命令行参数,默认是使用系统的sys.argv参数;参数namespace是命名对象的名称。
蔡军生 QQ:9073204 深圳