python argparse

本文介绍了Python标准库中的argparse模块如何定义互斥选项。通过add_mutually_exclusive_group()方法,可以在命令行参数中设置互斥的选项,确保在运行时只会选择其中一个。这对于需要设置对立功能的命令行应用非常有用。

python argparse

互斥选项

定义互斥的选项是选项分组特性的一个特例,使用add_mutually_exclusive_group()而不是add_argument_group()

import argparse

parser = argparse.ArgumentParser()

group = parser.add_mutually_exclusive_group()
group.add_argument('-a', action='store_true')
group.add_argument('-b', action="store_true")

print parser.parse_args()
argparse

http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

每个参数解释如下:

  • name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
  • action - 命令行遇到参数时的动作,默认值是 store。
    • store_const,表示赋值为const;
    • append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
    • append_const,将参数规范中定义的一个值保存到一个列表;
    • count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
  • nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
  • const - action 和 nargs 所需要的常量值。
  • default - 不指定参数时的默认值。
  • type - 命令行参数应该被转换成的类型。
  • choices - 参数可允许的值的一个容器。
  • required - 可选参数是否可以省略 (仅针对可选参数)。
  • help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
  • metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
  • dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
argparsePython 标准库中用于解析命令行参数的模块,提供了比早期 optparse 模块更强大和灵活的功能[^1]。 ### 基础用法示例 下面是一个简单示例,用于计算给定数字的平方: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number", type=int) args = parser.parse_args() print(args.square**2) ``` 在这个示例中,使用 `argparse.ArgumentParser` 类创建了一个参数解析器对象,通过 `add_argument` 方法添加了一个位置参数 `square`,用于接收一个数字,并且指定了参数类型为整数。最后通过 `parse_args` 方法解析命令行参数,并计算该数字的平方并输出[^3]。 ### 更多参数设置示例 以下代码展示了添加不同类型命令行选项的用法: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("-v", "--verbose", action="store_true", help="increase output verbosity") parser.add_argument("-n", "--name", required=True, help="specify a name") parser.add_argument("-a", "--age", type=int, default=18, help="specify an age, default is 18") args = parser.parse_args() if args.verbose: print(f"Name: {args.name}, Age: {args.age}") else: print(f"{args.name} is {args.age} years old.") ``` 在上述代码中,使用 `add_argument` 方法添加了三个命令行选项: - `-v` 和 `--verbose` 是一个开关选项,使用 `action="store_true"` 表示当该选项被指定时,`args.verbose` 会被设置为 `True`,用于表示是否增加详细输出。 - `-n` 和 `--name` 是一个必需的选项,通过 `required=True` 指定,用于指定姓名。 - `-a` 和 `--age` 是一个可选的选项,使用 `type=int` 指定参数类型为整数,`default=18` 指定默认值为 18,用于指定年龄[^5]。 ### 关于帮助信息 不带任何参数执行包含 argparse 的脚本时,不会有输出。而使用 `--help` 选项(可以简写成 `-h`)可以获取很好的帮助信息,这是 argparse 模块自动提供的,不需要额外代码定义。指定除了已定义选项之外的其他选项会导致报错,但即使只做了简单的参数定义,也能免费获得帮助信息[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值