argparse

作者: hehehehe | 来源:发表于2024-09-04 20:38 被阅读0次

    argparse 是 Python 标准库中的一个模块,用于解析命令行参数。它提供了一种灵活且强大的方式来定义和解析命令行选项和参数,并自动生成帮助和使用信息。以下是 argparse 模块的详细介绍。

    1. 创建 ArgumentParser 对象

    使用 argparse.ArgumentParser 类来创建一个解析器对象。

    import argparse
    
    parser = argparse.ArgumentParser(description='This is a sample script.')
    
    • description 参数用于提供帮助信息中的描述。

    2. 添加参数

    使用 add_argument 方法来添加位置参数和可选参数。

    位置参数

    位置参数是必须提供的参数,按顺序解析。

    parser.add_argument('name', type=str, help='Your name')
    

    可选参数

    可选参数是通过前缀 --- 来指定的参数。

    parser.add_argument('--age', type=int, help='Your age')
    parser.add_argument('-c', '--city', type=str, help='Your city')
    

    参数类型

    可以通过 type 参数指定参数的类型,如 intfloatstr 等。

    parser.add_argument('age', type=int, help='Your age')
    

    默认值

    可以使用 default 参数为可选参数设置默认值。

    parser.add_argument('--age', type=int, default=25, help='Your age')
    

    必需的可选参数

    可以使用 required 参数将可选参数设置为必需的。

    parser.add_argument('--age', type=int, required=True, help='Your age')
    

    布尔类型参数

    可以使用 action='store_true' 来定义布尔类型的可选参数。

    parser.add_argument('--verbose', action='store_true', help='Enable verbose mode')
    

    互斥组

    可以使用互斥组来确保某一组参数中只能提供一个。

    group = parser.add_mutually_exclusive_group()
    group.add_argument('--foo', action='store_true', help='Enable foo')
    group.add_argument('--bar', action='store_true', help='Enable bar')
    

    3. 解析参数

    使用 parse_args 方法来解析命令行参数。

    args = parser.parse_args()
    

    解析后的参数将存储在 args 对象中,可以通过属性访问。

    print(f'Hello, {args.name}!')
    if args.age:
        print(f'You are {args.age} years old.')
    if args.city:
        print(f'You live in {args.city}.')
    

    4. 帮助信息

    argparse 自动生成帮助信息,可以通过 -h--help 选项查看。

    python script.py -h
    

    输出示例:

    usage: script.py [-h] [--age AGE] [--city CITY] name
    
    This is a sample script.
    
    positional arguments:
      name        Your name
    
    optional arguments:
      -h, --help  show this help message and exit
      --age AGE   Your age
      --city CITY Your city
    

    5. 高级用法

    参数别名

    可以为同一个参数定义多个名字(别名)。

    parser.add_argument('-n', '--name', type=str, help='Your name')
    

    参数数量

    可以使用 nargs 参数指定参数的数量。

    parser.add_argument('numbers', type=int, nargs='+', help='A list of numbers')
    
    • nargs='?':零或一个参数
    • nargs='*':零或多个参数
    • nargs='+':一个或多个参数

    参数的选择范围

    可以使用 choices 参数指定参数的选择范围。

    parser.add_argument('--color', choices=['red', 'green', 'blue'], help='Choose a color')
    

    参数分组

    可以使用 add_argument_group 方法将参数分组,以便在帮助信息中更好地组织。

    group1 = parser.add_argument_group('Group 1')
    group1.add_argument('--foo', help='Foo option')
    
    group2 = parser.add_argument_group('Group 2')
    group2.add_argument('--bar', help='Bar option')
    

    6. 完整示例

    以下是一个包含多种功能的完整示例。

    import argparse
    
    # 创建 ArgumentParser 对象
    parser = argparse.ArgumentParser(description='This is a sample script.')
    
    # 添加位置参数
    parser.add_argument('name', type=str, help='Your name')
    
    # 添加可选参数
    parser.add_argument('--age', type=int, default=25, help='Your age')
    parser.add_argument('-c', '--city', type=str, help='Your city')
    parser.add_argument('--verbose', action='store_true', help='Enable verbose mode')
    
    # 创建互斥组
    group = parser.add_mutually_exclusive_group()
    group.add_argument('--foo', action='store_true', help='Enable foo')
    group.add_argument('--bar', action='store_true', help='Enable bar')
    
    # 解析命令行参数
    args = parser.parse_args()
    
    # 使用解析后的参数
    print(f'Hello, {args.name}!')
    print(f'You are {args.age} years old.')
    
    if args.city:
        print(f'You live in {args.city}.')
    
    if args.verbose:
        print('Verbose mode is enabled.')
    
    if args.foo:
        print('Foo is enabled.')
    elif args.bar:
        print('Bar is enabled.')
    

    运行示例:

    python script.py Alice --age 30 --city London --verbose --foo
    

    输出将是:

    Hello, Alice!
    You are 30 years old.
    You live in London.
    Verbose mode is enabled.
    Foo is enabled.
    

    总结

    argparse 模块提供了一种灵活且强大的方式来解析命令行参数。通过使用 ArgumentParser 对象和 add_argument 方法,可以轻松定义和解析各种类型的参数,并生成帮助信息。结合高级用法,如互斥组、参数分组和参数选择范围,可以满足复杂的命令行解析需求。如果你有更多问题或需要进一步的帮助,请随时提问。

    相关文章

      网友评论

          本文标题:argparse

          本文链接:https://www.haomeiwen.com/subject/ekhrljtx.html