如何用Python argparse实现-f与-a/-b的参数互斥校验?
Python argparse 实现指定参数互斥规则的方案
需求梳理
需要实现的参数规则如下:
- 可选参数
-f与-a、-b完全互斥,不能同时出现 -a和-b可同时使用,也可单独使用任意一个
实现代码
import argparse # 初始化解析器 parser = argparse.ArgumentParser(prog="myprog") # 注册所有需要的参数 parser.add_argument("-f", type=str, help="参数f,不可与-a/-b共用") parser.add_argument("-a", type=str, help="参数a,可与-b共用,不可与-f共用") parser.add_argument("-b", type=str, help="参数b,可与-a共用,不可与-f共用") # 解析参数 args = parser.parse_args() # 自定义规则校验 # 规则1:-f不能和-a/-b同时出现 if args.f is not None and (args.a is not None or args.b is not None): parser.error("参数 -f 不能与 -a、-b 中的任意参数同时使用") # 规则2(可选):必须至少传入一类参数,不允许所有参数都为空 if args.f is None and args.a is None and args.b is None: parser.error("必须传入 -f,或者至少传入 -a/-b 中的一个参数")
验证效果
所有合法调用均可正常通过解析,非法调用会直接抛出符合预期的错误提示,完全匹配需求。
内容的提问来源于stack exchange,提问作者Hirusha Fernando
相关产品推荐
相关产品推荐

