python-argparse模块

argparse模块可以让人编写命令行接口

 下面这个python程序,可以获取一个整数列表并计算总和或者最大值,下面将用这个例子来讲解argparse模块

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
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)')

args = parser.parse_args()
print(args.accumulate(args.integers))

1.创建一个解析器

  使用argparse的第一步使创建一个ArgumentParser对象

  ArgumentParser对象包括将命令行接解析成python数据类型所需的信息

 parser = argparse.ArgumentParser(description='Process some integers.')

 

2.添加参数

  给一个ArgumentParser对象添加程序参数信息,首先要通过调用add_argument()方法完成的。通常,这些调用指定ArgumentParser如何获取命令行字符串并将其转换为对象。这些信息在parse_args()调用时被存储和使用。

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)')

稍后,调用parse_arges()将返回一个具有integers和accumulate两个属性的对象。integers属性将是一个包含了一个或者多个整数的列表,accumulate属性,当命令行中指定了--sum参数时将是sum()函数,否则默认时max()函数。

3.解析函数

ArgumentParser通过parse_args()方法解析参数。他将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。在大多数情况下,这就是一个简单的Namespace对象将从命令行参数解析出的属性构建

parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])

  在脚本中 parse_args()经常会被不带参数调用,而ArgumentParser将自动从sys.argv中确定命令行参数。

 

ArgumentParser对象

ArgumentParser(prog=none,usage=none,description=none,epilog=none,parents=[],formatter_class=argparse.HelpFormatter,prefinx_chars='-',fromfile_prefix_chars=none, argument_default=None,conflict_handler='error'add_help=Trueallow_abbrev=Trueexit_on_error=True

 

prog:程序的名称

usage:描述程序用途的字符串

description:在参数帮助文档之前显示的文本

epilog:在参数帮助文档之后显示的文本

parents:一个ArgumentParsent对象的列表,它的参数也应包含在内

formatter_class:用于自定义帮助文档输出格式的类

prefix_chars:可选参数的前缀字符集合(默认值:'-')

add_help:为函数添加一个-h选项

exit_on_error:决定错误发生时,是否让ArgumentParser附带错误信息退出

 

上一篇:SPOJ COT2 - Count on a tree II(树上莫队)


下一篇:A. Sum of Odd Integers(水题)