Учитывая небольшой синтаксический анализатор:
from argparse import ArgumentError, ArgumentParser
p = ArgumentParser()
p.add_argument('x', choices=['1', '2'])
p.add_argument('--y', required=False)
p.parse_args('1 --y 2'.split()) # this would work
p.parse_args('1'.split()) # this would work also
Однако я хочу убедиться, что если x=='1'
, то --y
получит значение.Моя реализация была такой:
args = p.parse_args('1 --y 2'.split())
if args.x=='1' and not args.y:
raise ArgumentError('blah')
Есть ли внутренний argparse способ сделать это?это выглядит намного лучше, когда argparse выдает ошибку разбора
Еще лучше, я хочу, чтобы аргумент --y
требовался при x=='1'
и не разрешался при x=='2'