python - 使用 argparse 需要两个参数之一

给定:

import argparse

pa = argparse.ArgumentParser()
pa.add_argument('--foo')
pa.add_argument('--bar')

print pa.parse_args('--foo 1'.split())

我该怎么做

  • 强制要求“foo, bar”中的至少一项:--foo x--bar y--foo x --bar y 没问题
  • 强制设置最多一个 "foo, bar":--foo x--bar y 都可以,--foo x -- bar y 不是

最佳答案

我认为您正在搜索类似 mutual exclusion 的内容(至少对于您问题的第二部分)。

这样,只会接受 foo 或 bar,而不是两者。

import argparse

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--foo',action=.....)
group.add_argument('--bar',action=.....)
args = parser.parse_args()

顺便说一句,刚刚找到 another question指的是同类型的问题。

https://stackoverflow.com/questions/11154946/

相关文章:

python - Pandas 用空白/空字符串替换 NaN

python - 使用 IPython 逐步调试

linux - 为什么人们使用 tarball?

linux - SIGINT 与 SIGTERM、SIGQUIT 和 SIGKILL 等其他终止信号

javascript - 即使没有其他进程阻塞该端口,Node.js 应用程序也无法在端口 80 上

python - 在 Python 中查找列表的中位数

linux - 如何使用 strace 跟踪子进程?

mysql - MySQL 服务器和 MySQL 客户端有什么区别

python - 使用 pandas 绘制相关矩阵

python - 如何在 Python 中创建对象的副本?