【发布时间】:2018-02-20 08:19:57
【问题描述】:
我正在想办法让 argparse 位置参数与可选参数互斥。
例如:
./adder 20 32
Output: 52
./adder --interactive
adder>
现在,如果我只是尝试“--interactive”,它会告诉我我缺少位置参数。
示例代码:
parser = argparse.ArgumentParser()
parser.add_argument('a', metavar='First')
parser.add_argument('b', metavar='Second')
parser.add_argument('--interactive')
parser.parse_args()
我想知道是否有一种优雅的方法可以做到这一点(最好使用 argparse 功能),以便“--interactive”禁用使用两个位置参数的要求。
【问题讨论】:
-
我们可以看到您指定参数等的实际代码吗?
-
刚刚添加的示例代码
-
你试过
add_argument('parms', nargs='*')吗?参数被收集到一个列表中,如果位置参数不存在,则列表为空。 -
mutual_exclusive_group 机制 docs.python.org/3/library/argparse.html#mutual-exclusion 接受“可选”(?或 *)位置参数