一、argparse模块简介
argparse是Python自带的一个命令行参数解析模块。它可以轻松地处理命令行中的参数,并且带有自动生成帮助和用法的功能。argparse模块可以解析命令行参数,生成参数帮助信息,支持互斥选项,选项依赖等。argparse最大的特点是其易用性,它提供了极为友好的API,对于开发者来说非常容易上手。
二、使用argparse模块
为了解析命令行参数,我们需要创建一个ArgumentParser对象,并定义需要使用的命令行选项和参数。我们可以通过add_argument()方法来添加命令行选项和参数。下面是一个简单的示例:
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))
在这个示例中,我们首先创建了一个ArgumentParser对象,并定义了一个描述。然后使用add_argument()方法添加了两个命令行选项:integers和–sum。其中,integers是一个需要输入整数值的参数,nargs='+' 表示该参数是一个或多个值,并且被储存为列表;而–sum则是一个标志,如果在命令行中加入了该选项,则args.accumulate将会被赋予一个function(sum),否则赋予一个function(max)。最后,我们使用parser.parse_args()解析了命令行参数。
三、参数选项
在使用argparse解析命令行参数时,往往我们需要一些参数选项(也叫选项参数)。参数选项通常是以“-”(单破折线)或“--”(双破折线)开头,后面跟一个选项名称。argparse提供了add_argument()方法来添加参数选项。
下面是一个例子,添加了name和age两个参数选项:
import argparse parser = argparse.ArgumentParser() parser.add_argument("--name", help="your name") parser.add_argument("--age", help="your age", type=int) args = parser.parse_args() print(args.name) print(args.age)
在命令行中执行时,可以输入以下代码(其中"name" 和 "age"是自定义的参数名称):
python test.py --name "John" --age 20
命令行实际上将会被解析成如下:
args = parser.parse_args() #即 args.name="John", args.age=20
除了上述示例中的--name和–age之外,还有一些常用的参数选项:
- -h, --help:显示帮助信息
- -v, --version:显示版本信息
- -f, --file FILE:指定文件(FILE为文件名)
四、位置参数
除了参数选项,Python的命令行程序还支持位置参数。位置参数要求在命令行中以给定的顺序输入参数。它们不需要指定名称,并且是必需的。Positional arguments可以使用add_argument()方法添加:
import argparse parser = argparse.ArgumentParser() parser.add_argument("echo", help="echo the string you use here") args = parser.parse_args() print(args.echo)
在这个示例中,我们定义了一个位置参数echo,这个参数会重复输出我们在命令行中输入的值。在执行脚本时,我们可以这样使用:
python test.py hello world
输出值将会是:
hello world
五、组合使用
argparse提供了参数组合的功能,可以同时使用参数选项和位置参数。
import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument("square", type=int, help="display a square of a given number") parser.add_argument("-v", "--verbose", action="store_true", help="increase output verbosity") args = parser.parse_args() answer = args.square**2 if args.verbose: print("the square of {} equals {}".format(args.square, answer)) else: print(answer)
在这个例子中,我们定义了一个(必要的)位置参数square和一个可选的-v选项,用于提供更多输出信息。执行脚本”test.py 4 -v”会显示出方框的结果以及更具体的信息。
总结
argparse是Python中解析命令行参数的标准模块,它提供了丰富的参数选项和位置参数的支持,非常容易上手并且非常灵活。本文介绍了argparse的使用方法,并且举了几个例子。相信在开发过程中,使用argparse可以大大提高效率。