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函数来处理参数。