在 Python 中,ArgumentParser 是 argparse 模块提供的一个命令行参数解析器,用于解析命令行参数。
一、主要参数介绍:
??? 1. description (str):用于描述整个程序或命令行工具的简短说明。
??? 2. add_argument(name or flags, ...):添加命令行参数。name or flags 可以是一个位置参数(如 'name')或一个选项参数(如 '--age' 或 '-a')。其他参数用于指定参数的类型、默认值、帮助信息等。
????????type: 参数的类型。
????????default: 参数的默认值。
????????help: 参数的帮助信息。
??? 3. parse_args(): 解析命令行参数,并返回一个命名空间,其中包含解析后的参数。
??? 4. allow_abbrev (bool): 默认为 True。如果设置为 False,则禁用参数名的缩写形式。例如,如果有两个参数 --file 和 --force,允许缩写时可以使用 --fil,禁用缩写时需要写完整的参数名。
二、使用方法:
??? 1. 在脚本中创建 ArgumentParser 实例,可以添加整体描述。
??? 2. 使用 add_argument 方法添加需要的命令行参数。
??? 3. 使用 parse_args 方法解析命令行参数,并获得解析后的参数的值。
??? 4. 访问解析后的参数的值,然后在程序中使用这些参数。
import argparse
# 创建 ArgumentParser 实例
parser = argparse.ArgumentParser(description='Description of your program')
# 添加命令行参数
parser.add_argument('name', type=str, help='Description of the name parameter')
parser.add_argument('--age', type=int, default=25, help='Description of the age parameter')
# 解析命令行参数
args = parser.parse_args()
# 访问解析后的参数
print('Name:', args.name)
print('Age:', args.age)
# 打印完整的args对象
print('Complete args:', vars(args))
Name: John
Age: 30
Complete args: {'name': 'John', 'age': 30}
三、在命令行中运行脚本时,可以通过指定参数值来影响程序的行为。例如:
python script.py John --age 30
这将在脚本中解析参数,args.name 的值将是 'John',args.age 的值将是 30
四、额外的方法
??? parse_known_args(args=None, namespace=None): 类似于 'parse_args',但是不会报错,如果有未知参数,它会将其放在一个列表中返回。
import argparse
# 创建 ArgumentParser 实例
parser = argparse.ArgumentParser(description='Example script')
# 添加命令行参数
parser.add_argument('--name', type=str, help='Name parameter')
parser.add_argument('--age', type=int, help='Age parameter')
parser.add_argument('--verbose', action='store_true', help='Verbose flag')
# 解析命令行参数,获取已知参数和未知参数
args, unknown_args = parser.parse_known_args()
# 输出已知参数和未知参数
print('Known args:', args)
print('Unknown args:', unknown_args)
假设你运行以下命令:
python script.py --name John --age 30 --verbose --extra_arg1 value1 --extra_arg2 value2
输出:
Known args: Namespace(name='John', age=30, verbose=True)
Unknown args: ['--extra_arg1', 'value1', '--extra_arg2', 'value2']
已知参数包含了' --name'、'--age'、'--verbose' 这些由 ArgumentParser 知道的参数。未知参数包含了额外的参数' --extra_arg1 value1'、 '--extra_arg2 value2',这些参数不在 ArgumentParser 中定义。
这对于在程序中处理一些特定参数并将其余参数传递给其他命令行工具或模块很有用。
五、详细信息:
??? 官方网址:argparse 官方文档