argpaser是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)
从命令行中输入prog.py -h,会显示如下信息
$ prog.py -h usage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max)
如果使用合适的参数,还可以求和或者取得最大值。
$ prog.py 1 2 3 4 4 $ prog.py 1 2 3 4 --sum 10
如果传递错误的参数,将返回错误信息。
$ prog.py a b c usage: prog.py [-h] [--sum] N [N ...] prog.py: error: argument N: invalid int value: ‘a‘
下面我们详细解释这个例子:
1.创建parser
首先,创建一个ArgumentParser对象。
>>> parser = argparse.ArgumentParser(description=‘Process some integers.‘)
ArgumentParser对象中保存着解析命令行参数所必需的信息。
2.添加参数
通过调用add_argument()方法将命令行中的参数保存到ArgumentParser对象中。
>>> 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_args(),将会返回一个包含integers和accumulate两个属性的对象,integers是一个列表,而accumulate可以是sum()函数(如果指定了--sum)或者max()函数。
3.解析参数
通过parse_args()方法解析参数,返回一个命名空间对象。
>>> parser.parse_args([‘--sum‘, ‘7‘, ‘-1‘, ‘42‘]) Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
如果在脚本中调用这个函数,parse_args()不会解析任何参数。ArgumentParser会从sys.argv中自动检测命令行参数。
时间: 2024-12-24 03:14:11