parser.add_argument中的action使用

action参数介绍

在使用Python编写命令行工具时,我们通常会使用argparse库来解析命令行参数。argparse库提供了一个ArgumentParser类,用于定义和解析命令行参数。

ArgumentParser的add_argument方法用于定义命令行参数,其中的action参数用于指定参数的行为。

1. 默认行为

当不指定action参数时,默认的行为是将参数存储为一个值。例如:

```python

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--name')

args = parser.parse_args()

```

上述代码定义了一个--name参数,当命令行中指定了--name参数时,该值会被存储在args.name变量中。

2. 常用的action参数

2.1 store

store行为是默认的行为,它将参数存储为一个值。这个值可以是字符串、整数等,取决于参数的类型。

```python

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--name', action='store', type=str)

args = parser.parse_args()

```

上述代码指定了--name参数并使用action='store'将其存储为一个字符串类型的值。

2.2 store_true和store_false

当需要处理开关类型的参数时,可以使用store_true和store_false行为。它们分别用于存储布尔值True和False。

```python

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--debug', action='store_true')

args = parser.parse_args()

if args.debug:

print("Debug mode is on.")

else:

print("Debug mode is off.")

```

上述代码定义了一个--debug参数,如果命令行中指定了--debug参数,则args.debug的值为True,否则为False。

2.3 append

当需要处理多个值的参数时,可以使用append行为。它会将每个指定的值都存储到一个列表中。

```python

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--file', action='append')

args = parser.parse_args()

for file in args.file:

print("Processing file:", file)

```

上述代码定义了一个--file参数,当命令行中指定多个--file参数时,每个值都会被存储到args.file列表中。

2.4 count

当需要统计命令行参数出现的次数时,可以使用count行为。

```python

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--verbose', action='count')

args = parser.parse_args()

if args.verbose == 1:

print("Verbose mode is on.")

elif args.verbose == 2:

print("Extra verbose mode is on.")

```

上述代码定义了一个--verbose参数,每次出现--verbose参数时,args.verbose的值会递增。

3. 自定义action

除了使用预定义的行为,还可以自定义action函数来处理参数。自定义的action函数需要接收四个参数:parser、namespace、values、option_string。

```python

import argparse

def custom_action(option_string, values, parser):

print(f"Option: {option_string}")

print(f"Values: {values}")

parser = argparse.ArgumentParser()

parser.add_argument('--custom', action=custom_action)

args = parser.parse_args()

```

上述代码定义了一个--custom参数,并指定了一个自定义的action函数custom_action来处理参数。

总结

本文介绍了argparse库中add_argument方法中的action参数的使用。通过设置action参数,可以定义参数的不同行为,如存储为值、存储为布尔值、存储为列表等。此外,还可以自定义action函数来处理参数。

后端开发标签