模块argparse 没有用于创建相互包含的参数的选项。
不过自己写很简单。
首先将两个参数都添加为可选:
parser.add_argument('arg1', nargs='?')
parser.add_argument('arg2', nargs='?')
解析参数后检查是否设置了arg1 而arg2 未设置:
args = parser.parse_args()
if args.arg1 and not args.arg2:
(如果您将未使用参数的默认值从 None 更改为不同的值,这可能会更加棘手)
然后使用parser.error()函数显示正常的argparse错误信息:
parser.error('the following arguments are required: arg2')
最后更改 usage: 消息以显示 arg2 依赖于 arg1:
parser = argparse.ArgumentParser(usage='%(prog)s [arg1 [arg2]]')
一个完整的脚本:
import argparse
parser = argparse.ArgumentParser(usage='%(prog)s [arg1 [arg2]]')
parser.add_argument('arg1', nargs='?')
parser.add_argument('arg2', nargs='?')
args = parser.parse_args()
if args.arg1 and not args.arg2:
parser.error('the following arguments are required: arg2')