argparse,两个参数相互依赖

我想使解析器像 cmd [-a xxx -b xxx] -c xxx -d xxx

什么时候-a使用,我也想-b使用。同样,如果-b使用,也-a必须使用。两者都可以-a-b并且不使用。

我怎么做?我尝试了自定义操作,但操作不顺利。


猛跑小猪
浏览 357回答 2
2回答

有只小跳蛙

更好的设计是拥有一个带有两个参数的选项:parser.add_argument('-a', nargs=2)然后,您要么使用2个参数指定选项,要么根本不指定它。$ script -a 1 2或者$ script自定义操作(或后处理)可以将元组args.a分为两个单独的值args.a和args.b。

手掌心

Argparse本身不支持此类使用。最有效的方法是检查并检查解析后是否满足这些类型的条件:import argparseparser = argparse.ArgumentParser()parser.add_argument('-b')parser.add_argument('-c')args = parser.parse_args()required_together = ('b','c')# args.b will be None if b is not providedif not all([getattr(args,x) for x in required_together]):    raise RuntimeError("Cannot supply -c without -b")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python