我正在使用python3.4
问题涉及https://docs.python.org/3/library/argparse.html包
如果我希望arg --with_extra_actions
始终包含--arg1
或--arg2
,并在缺少其中一个时给出错误消息?
示例:
command --arg1 --with_extra_actions
这应该有效
command --arg2 --with_extra_actions
这应该有效
command --with_extra_actions
这应该会因信息错误而失败。
我现在正在代码本身中这样做。没有问题,但argparse
lib是否有内在的方法来执行此操作?
答案 0 :(得分:0)
您可以使用add_mutually_exclusive_group执行此操作。这里的例子(test.py):
import argparse
import sys
parser = argparse.ArgumentParser(prog='our_cmd')
# with_extra_actions is always required
parser.add_argument(
'--with_extra_actions',
required=True,
action='store_false'
)
# only one argument from group is available
# group is required - one from possible arguments is required
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--arg1', action='store_true')
group.add_argument('--arg2', action='store_true')
parser.parse_args(sys.argv[1:])
现在让我们检查一下我们的脚本:
python test.py --with_extra_actions
usage: our_cmd [-h] --with_extra_actions (--arg1 | --arg2)
our_cmd: error: one of the arguments --arg1 --arg2 is required
让我们试试arg1
和arg2
:
python test.py --arg1 --arg2 --with_extra_actions
usage: our_cmd [-h] --with_extra_actions (--arg1 | --arg2)
our_cmd: error: argument --arg2: not allowed with argument --arg1
没有任何错误:
python test.py --arg1 --with_extra_actions
python test.py --arg2 --with_extra_actions
希望这有帮助。