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=True, allow_abbrev=True, exit_on_error=True)
prog:程序的名称
usage:描述程序用途的字符串
description:在参数帮助文档之前显示的文本
epilog:在参数帮助文档之后显示的文本
parents:一个ArgumentParsent对象的列表,它的参数也应包含在内
formatter_class:用于自定义帮助文档输出格式的类
prefix_chars:可选参数的前缀字符集合(默认值:'-')
add_help:为函数添加一个-h选项
exit_on_error:决定错误发生时,是否让ArgumentParser附带错误信息退出