您的位置:

Python参数命令行解析

一、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可以大大提高效率。