我有以下实用程序:
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/