模块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
(如果您将默认值从for not used arguments 更改为不同的值,这可能会更加棘手)
然后使用parser.error()
函数显示正常的argparse
错误信息:
parser.error('the following arguments are required: arg2')
最后更改用法:消息以显示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')