python - Argparse:如何在其他选项存在的情况下禁止某些选项 - Python

标签 python parsing command-line argparse

我有以下实用程序:

import argparse

parser = argparse.ArgumentParser(description='Do some action.')
parser.add_argument('--foo', '--fo', type=int, default=-1, help='do something foo')
parser.add_argument('--bar', '--br', type=int, default=-1, help='do something bar')
parser.add_argument('--baz', '--bz', type=int, default=-1, help='do something baz')
parser.add_argument('--bat', '--bt', type=int, default=-1, help='do something bat')

但是,如果使用 --foo 选项,则应禁止使用 --bat 选项,反之,则应禁用 --bat 选项仅当存在 --bar--baz 时才应使用 > 选项。如何使用 argparse 来实现这一点?当然,我可以添加一堆 if/else block 来检查这一点,但是有一些内置的 argparse 可以为我做到这一点吗?

最佳答案

您可以使用 parser.add_mutually_exclusive_group 创建互斥的选项组:

group = parser.add_mutually_exclusive_group()
group.add_argument('--foo', '--fo', type=int, default=-1, help='do something foo')
group.add_argument('--bat', '--bt', type=int, default=-1, help='do something bat')

,但对于更复杂的依赖关系图(例如,--bat 需要 --bar--baz),argparse 不提供任何特定支持。这在 inner-platform effect 的方向上走得太远了。 ,试图在 argparse 子系统中重建完整编程语言的太多通用性。

关于python - Argparse:如何在其他选项存在的情况下禁止某些选项 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459015/

相关文章:

python - 403、需要 If-Match 或 If-None-Match header 或条目 etag 属性

php - 从PHP Docker运行Python脚本

命令行上的 JavaScript

python - 在nodejs和Python之间交换数据

python - 如何不打印命令输出?

python - 使用 Flask 形成 css

Ruby String#scan 相当于返回 MatchData

C: 使用 sprintf( ) 做 IP 地址解析,不正确的值

windows - 如何更改 Windows 命令提示符中的文本颜色