argparse是 Python 标准库中用于命令行参数解析的模块。它可以方便地解析命令行参数,并提供了丰富的功能来处理各种参数类型和选项。
import argparse
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='这是一个示例程序,用于演示 argparse 的更多用法')
# 添加参数
# 参数名称的简写或全称
parser.add_argument('-i', '--input', type=str, required=True, help='输入文件的路径(简写:-i,全称:--input)')
parser.add_argument('-o', '--output', type=str, default='output.txt', help='输出文件的路径(简写:-o,全称:--output,默认值:output.txt)')
parser.add_argument('-v', '--verbose', action='store_true', help='是否输出详细信息(简写:-v,全称:--verbose)')
# 规定数据类型
parser.add_argument('--num', type=int, help='一个整数参数')
parser.add_argument('--float_num', type=float, help='一个浮点数参数')
# 默认值
parser.add_argument('--default_str', type=str, default='default_value', help='一个默认值为 "default_value" 的字符串参数')
parser.add_argument('--default_int', type=int, default=100, help='一个默认值为 100 的整数参数')
# 是否是必须值
parser.add_argument('--required_arg', type=str, required=True, help='一个必须提供的参数')
# 处理多个参数
parser.add_argument('--multi_args', nargs='+', type=int, help='多个整数参数')
# 限制参数取值范围
parser.add_argument('--choice_arg', choices=['option1', 'option2', 'option3'], help='只能从指定选项中选择的参数')
# 分组参数
group1 = parser.add_argument_group('Group 1')
group1.add_argument('--group1_arg1', type=str, help='Group 1 中的参数 1')
group1.add_argument('--group1_arg2', type=int, help='Group 1 中的参数 2')
group2 = parser.add_argument_group('Group 2')
group2.add_argument('--group2_arg1', type=float, help='Group 2 中的参数 1')
group2.add_argument('--group2_arg2', type=str, help='Group 2 中的参数 2')
# 解析命令行参数
args = parser.parse_args()
# 访问参数值
if args.input:
print(f'输入文件路径:{args.input}')
if args.output:
print(f'输出文件路径:{args.output}')
if args.verbose:
print('将输出详细信息')
if args.num:
print(f'整数参数:{args.num}')
if args.float_num:
print(f'浮点数参数:{args.float_num}')
if args.default_str:
print(f'默认字符串参数:{args.default_str}')
if args.default_int:
print(f'默认整数参数:{args.default_int}')
if args.required_arg:
print(f'必须参数:{args.required_arg}')
if args.multi_args:
print(f'多个整数参数:{args.multi_args}')
if args.choice_arg:
print(f'选择的参数:{args.choice_arg}')
if args.group1_arg1:
print(f'Group 1 中的参数 1:{args.group1_arg1}')
if args.group1_arg2:
print(f'Group 1 中的参数 2:{args.group1_arg2}')
if args.group2_arg1:
print(f'Group 2 中的参数 1:{args.group2_arg1}')
if args.group2_arg2:
print(f'Group 2 中的参数 2:{args.group2_arg2}')
在上述示例中,我们创建了一个ArgumentParser对象:
- - -input和- -output是位置参数,使用type=str指定参数类型为字符串,并通过help参数提供了参数的描述信息。
- - -verbose是一个布尔型参数,使用action='store_true’表示如果命令行中出现了该参数,则将其值设置为True,否则为False。
- 使用parse_args()方法解析命令行参数,并将结果存储在args变量中。
- 可以通过访问args对象的属性来获取参数的值【必须是全称】,并根据参数的值进行相应的处理。
- 参数名称的简写或全称:通过同时指定简写和全称,用户可以在命令行中使用不同的方式来指定参数。
- 规定数据类型:使用 type 参数来指定参数的数据类型,确保输入的参数符合预期的数据类型。
- 默认值:使用 default 参数为参数设置默认值,如果在命令行中未提供该参数,则使用默认值。
- 是否是必须值:使用 required 参数来指定参数是否是必须提供的,如果在命令行中未提供必须参数,将会报错。
- 处理多个参数:使用 nargs=‘+’ 来指定参数可以接受多个值,这些值将被存储在一个列表中。
- 限制参数取值范围:使用 choices 参数来限制参数的取值范围,确保用户只能从指定的选项中选择。
- 分组参数:使用 add_argument_group() 方法来分组参数,使参数的组织更加清晰。