Python中的add_argument方法详解

Python中的add_argument方法详解

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])
Python

参数说明:

  • 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)
Python

运行上述代码,并传入参数--input input.txt,将会输出input.txt。这里的-i--input的简写形式,在命令行中我们可以使用--input-i来指定输入文件。

3. 参数action

action参数用来指定参数的行为。常用的取值包括:

  • store: 存储参数值(默认值)
  • store_true: 存储True
  • store_false: 存储False
  • append: 追加到列表中
  • 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')
Python

运行上述代码,并传入参数--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)
Python

运行上述代码,并传入参数--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)
Python

运行上述代码,输出为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)
Python

运行上述代码,并未传入--output参数时,将会输出output.txt。这里'output.txt'default参数的默认值。

7. 参数type

type参数用来指定参数的类型。常用的类型包括intfloatstr等。当指定了type参数时,解析器将自动转换用户输入的参数值为指定的类型。

示例代码如下:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--num', type=int, help='Number')
args = parser.parse_args()

print(args.num)
Python

运行上述代码,并传入参数--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)
Python

运行上述代码,并传入参数--mode train,将会输出train。这里choices=['train', 'test']表示--mode参数只能选择traintest作为参数值。

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)
Python

运行上述代码,未传入--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)
Python

运行上述代码,并传入-h选项,将会显示类似以下信息:

usage: demo.py [-h] [--input INPUT]

optional arguments:
  -h, --help     show this help message and exit
  --input INPUT  Input file
Python

这里--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)
Python

运行上述代码,并传入-h选项,将会显示类似以下信息:

usage: demo.py [-h] [--input FILE]

optional arguments:
  -h, --help   show this help message and exit
  --input FILE Input file
Python

这里使用了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)
Python

运行上述代码,并传入--input input.txt,将会输出input.txt。这里使用了dest='file'来指定--input参数在Namespace对象中保存的名称为file

结语

本文介绍了Python中argparse模块中add_argument()方法的基本用法及各个参数的作用。通过合理使用add_argument()方法,我们可以轻松地为命令行程序添加各种参数选项,使程序更加灵活和易用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册