Python中的add_argument方法详解

在Python中,argparse模块是一个用于编写命令行接口(CLI)的标准库。它使得编写具有参数选项的命令行程序变得容易和简单。在argparse模块中,add_argument()方法是一个常用的方法,用来向解析器(Parser)中添加命令行参数和选项。本文将详细介绍add_argument()方法的用法以及一些示例代码。
1. add_argument()方法的基本用法
在使用argparse模块时,我们首先需要创建一个ArgumentParser对象,然后通过该对象的add_argument()方法来添加命令行参数和选项。add_argument()方法的基本语法如下:
parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
参数说明:
- name or flags: 命令行参数的名称或选项
- action: 指定参数的行为,如store、store_true、store_false等
- nargs: 指定参数的个数,可以是固定值、范围值或通配符
- const: 指定参数的常量值
- default: 指定参数的默认值
- type: 指定参数的类型,如int、float、str等
- choices: 指定参数的可选值
- required: 指定参数是否必需
- help: 参数的帮助信息
- metavar: 参数在帮助信息中的名称
- dest: 参数的目标名称
下面我们来逐个解释这些参数的作用。
2. 参数name or flags
name or flags参数用来指定命令行参数的名称或选项。其中,name是参数的全名,如--input;而flags是参数的简写形式,如-i。通常情况下,我们会同时指定参数的全名和简写形式。示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', '-i', help='Input file')
args = parser.parse_args()
print(args.input)
运行上述代码,并传入参数--input input.txt,将会输出input.txt。这里的-i是--input的简写形式,在命令行中我们可以使用--input或-i来指定输入文件。
3. 参数action
action参数用来指定参数的行为。常用的取值包括:
store: 存储参数值(默认值)store_true: 存储Truestore_false: 存储Falseappend: 追加到列表中count: 统计出现的次数
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true', help='Verbose output')
args = parser.parse_args()
if args.verbose:
print('Verbose output enabled')
运行上述代码,并传入参数--verbose,将会输出Verbose output enabled。这里--verbose的行为是存储True,当传入--verbose时,args.verbose的值为True。
4. 参数nargs
nargs参数用来指定参数的个数。常用的取值包括:
N: 指定固定的参数个数?: 可选参数,可以为0个或1个+: 至少一个参数*: 零个或多个参数
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--files', nargs='+', help='List of files')
args = parser.parse_args()
print(args.files)
运行上述代码,并传入参数--files file1.txt file2.txt,将会输出['file1.txt', 'file2.txt']。这里nargs='+'表示至少需要一个文件名参数。
5. 参数const
const参数用来指定参数的常量值。当指定了const参数时,解析器会将参数的值设置为const的值,而不是由用户输入。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--mode', action='store_const', const='test', help='Run in test mode')
args = parser.parse_args()
print(args.mode)
运行上述代码,输出为test。这里--mode的行为是存储const的值'test'。
6. 参数default
default参数用来指定参数的默认值。当用户未指定参数值时,参数将使用默认值。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--output', default='output.txt', help='Output file')
args = parser.parse_args()
print(args.output)
运行上述代码,并未传入--output参数时,将会输出output.txt。这里'output.txt'是default参数的默认值。
7. 参数type
type参数用来指定参数的类型。常用的类型包括int、float、str等。当指定了type参数时,解析器将自动转换用户输入的参数值为指定的类型。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--num', type=int, help='Number')
args = parser.parse_args()
print(args.num)
运行上述代码,并传入参数--num 42,将会输出42。这里type=int将用户输入的参数值转换为整数类型。
8. 参数choices
choices参数用来指定参数的可选值,用户只能从指定的值中选择一个作为参数值。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--mode', choices=['train', 'test'], help='Mode')
args = parser.parse_args()
print(args.mode)
运行上述代码,并传入参数--mode train,将会输出train。这里choices=['train', 'test']表示--mode参数只能选择train或test作为参数值。
9. 参数required
required参数用来指定参数是否必须。当设定为True时,用户必须传入该参数;当设定为False时,该参数为可选参数。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', required=True, help='Input file')
args = parser.parse_args()
print(args.input)
运行上述代码,未传入--input参数时,将会提示用户缺少参数。
10. 参数help
help参数用来指定命令行参数的帮助信息。当用户使用-h或--help选项时,将会显示该参数的帮助信息。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', help='Input file')
args = parser.parse_args()
print(args.input)
运行上述代码,并传入-h选项,将会显示类似以下信息:
usage: demo.py [-h] [--input INPUT]
optional arguments:
-h, --help show this help message and exit
--input INPUT Input file
这里--input参数的帮助信息为Input file。
11. 参数metavar
metavar参数用来指定参数在帮助信息中的名称。通常情况下,argparse会根据参数的全名和简写形式来生成帮助信息中的参数名称,但是我们可以通过metavar参数来自定义参数名称。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', metavar='FILE', help='Input file')
args = parser.parse_args()
print(args.input)
运行上述代码,并传入-h选项,将会显示类似以下信息:
usage: demo.py [-h] [--input FILE]
optional arguments:
-h, --help show this help message and exit
--input FILE Input file
这里使用了metavar='FILE'来指定--input参数在帮助信息中的名称为FILE。
12. 参数dest
dest参数用来指定参数的目标名称。当解析器解析命令行参数后,将会把结果保存在Namespace对象中,并使用dest参数所指定的名称来保存参数值。
示例代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', dest='file', help='Input file')
args = parser.parse_args()
print(args.file)
运行上述代码,并传入--input input.txt,将会输出input.txt。这里使用了dest='file'来指定--input参数在Namespace对象中保存的名称为file。
结语
本文介绍了Python中argparse模块中add_argument()方法的基本用法及各个参数的作用。通过合理使用add_argument()方法,我们可以轻松地为命令行程序添加各种参数选项,使程序更加灵活和易用。
极客教程