Python 3.x 中如何使用argparse模块解析命令行参数

1. 引言

在Python开发中,命令行程序中的参数解析是非常重要的一个环节。而argparse模块是Python 3.x中官方推荐的参数解析模块,它支持定义参数并给出说明文档,支持类型检查和自动生成帮助信息等多种功能。

本文将详细介绍argparse模块的使用方法,包括如何定义参数、如何给出说明文档、如何进行类型检查和如何自动生成帮助信息。

2. 基本用法

2.1 安装argparse

argparse作为Python 3.x的标准库,可直接使用,无需安装。如果使用的是Python 2.x,在使用argparse之前需要先进行安装。

2.2 最简单的例子

下面是一个最简单的例子:

import argparse

parser = argparse.ArgumentParser() # 创建解析器

parser.parse_args() # 解析参数

运行上面的程序,如果没有设置参数,程序会直接运行结束。

2.3 添加参数

使用add_argument()方法添加参数,其第一个参数为参数的名称或选项,第二个参数为其它可选参数。例如:

parser.add_argument('-f', '--file', help='input file')

上面的代码中,‘-f’和‘--file’都是该参数的选项,help参数用于给出该参数的说明文档。

2.4 解析参数

使用parse_args()方法解析参数。在代码中加入参数后,调用该方法后可以获取到参数。例如:

import argparse

parser = argparse.ArgumentParser() # 创建解析器

parser.add_argument('-f', '--file', help='input file') # 添加参数

args = parser.parse_args() # 解析参数

print(args.file)

可以使用‘python example.py -f input.txt’的命令来运行这个示例程序,此时输出的结果为‘input.txt’。

3. 更多用法

3.1 添加参数

添加参数时,可以指定参数的类型、默认值、是否必须等。例如:

parser.add_argument('--n', type=int, default=10, required=True,

help='The number of iterations')

上面的代码中,type指定了参数的类型为整数,default指定了默认值为10,required指定了参数是必须的。help参数用于给出该参数的说明文档。

3.2 参数组

参数组可用于对一组相关参数进行分组,使程序更加易于管理。例如:

import argparse

parser = argparse.ArgumentParser() # 创建解析器

input_group = parser.add_argument_group('Input') # 输入参数组

input_group.add_argument('-i', '--input', help='input file') # 输入文件

output_group = parser.add_argument_group('Output') # 输出参数组

output_group.add_argument('-o', '--output', help='output file') # 输出文件

output_group.add_argument('-v', '--verbose', action='store_true', help='verbose output') # 是否显示详细输出

上面的代码中,分别定义了输入参数组和输出参数组,输出参数组中还定义了一个‘-v’或‘--verbose’选项,用于输出详细信息。

3.3 类型检查

argparse模块本身提供了一些常见的类型检查功能,如int、float等,若是自定义类型,也可以通过自定义函数实现类型检查。例如:

def positive_number(string):

value = float(string)

if value <= 0:

raise argparse.ArgumentTypeError('Must be a positive number')

return value

parser.add_argument('--k', type=positive_number, help='The coefficient k')

上面的代码中,定义了一个positive_number函数,用于检查参数是否为正数。如果参数不是正数,将抛出argparse.ArgumentTypeError类型的异常,给出提示信息‘Must be a positive number’。而该函数则作为type参数的值,用于检查‘--k’参数的类型。

3.4 自动生成帮助信息

argparse模块提供了自动生成帮助信息的功能,只需要在解析参数前添加一个‘-h’或‘--help’选项即可。例如:

import argparse

parser = argparse.ArgumentParser() # 创建解析器

parser.add_argument('-f', '--file', help='input file') # 添加参数

args = parser.parse_args() # 解析参数

在运行上面的程序时,如果输入‘python example.py -h’或‘python example.py --help’,将会自动生成帮助信息:

usage: example.py [-h] [-f FILE]

optional arguments:

-h, --help show this help message and exit

-f FILE, --file FILE input file

上面的帮助信息中,‘[]’括号表示该选项是可选的,‘-h’和‘--help’选项是argparse模块自带的,无需自定义。

4. 结论

argparse模块是Python 3.x中最常用的参数解析模块之一,其具备自动生成帮助信息、类型检查、多参数组等方便实用的功能,大大提高了命令行程序的参数解析效率和程序的易用性。程序员可以根据自己的实际需求来对argparse进行灵活使用。

后端开发标签