为了账号安全,请及时绑定邮箱和手机立即绑定

argparse,两个参数相互依赖

argparse,两个参数相互依赖

猛跑小猪 2021-03-06 23:15:57
我想使解析器像 cmd [-a xxx -b xxx] -c xxx -d xxx什么时候-a使用,我也想-b使用。同样,如果-b使用,也-a必须使用。两者都可以-a,-b并且不使用。我怎么做?我尝试了自定义操作,但操作不顺利。
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

更好的设计是拥有一个带有两个参数的选项:

parser.add_argument('-a', nargs=2)

然后,您要么使用2个参数指定选项,要么根本不指定它。

$ script -a 1 2

或者

$ script

自定义操作(或后处理)可以将元组args.a分为两个单独的值args.aargs.b


查看完整回答
反对 回复 2021-03-30
?
手掌心

TA贡献1942条经验 获得超3个赞

Argparse本身不支持此类使用。


最有效的方法是检查并检查解析后是否满足这些类型的条件:


import argparse


parser = 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 provided

if not all([getattr(args,x) for x in required_together]):

    raise RuntimeError("Cannot supply -c without -b")


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 354 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信