Argparse:如果存在“ x”,则必需的参数“ y”
问题内容:
我有如下要求:
./xyifier --prox --lport lport --rport rport
对于参数prox,我使用action =’store_true’来检查它是否存在。我不需要任何论点。但是,如果设置了--prox,我也 需要
rport和lport。有没有一种简单的方法可以用argparse做到这一点而无需编写自定义条件编码。
更多代码:
non_int.add_argument('--prox', action='store_true', help='Flag to turn on proxy')
non_int.add_argument('--lport', type=int, help='Listen Port.')
non_int.add_argument('--rport', type=int, help='Proxy port.')
问题答案:
不,argparse中没有任何选项可以构成相互 包含 的选项集。
解决此问题的最简单方法是:
if args.prox and (args.lport is None or args.rport is None):
parser.error("--prox requires --lport and --rport.")