- Можно указать флаги -a 'thing1' и/или -b 'thing2'.< /li>
Если любой из них указан, можно указать флаги «sub» -c и/или -d. * Если -a и/или -b не указаны, -c и/или -d следует игнорировать/помечать как неправильные.
Код: Выделить всё
import argparse
flag1 = argparse.ArgumentParser(add_help=False)
flag1.add_argument("-a", "--alpha")
flag1.add_argument("-b", "--beta")
flag1a = argparse.ArgumentParser(parents=[flag1])
flag1a.add_argument("-c", "--charlie", action="store_true")
flag1a.add_argument("-d", "--delta", action="store_true")
args = flag1a.parse_args()
if args.alpha == None :
print("Alpha not provided")
else:
print("Alpha provided:", args.alpha)
if args.beta == None :
print("Beta not provided")
else:
print("Beta provided:", args.beta)
print(args)
Код: Выделить всё
prog.py -a testa -c -d
Alpha provided: testa
Beta not provided
Namespace(alpha='testa', beta=None, charlie=True, delta=True)
Код: Выделить всё
prog.py -c
Alpha not provided
Beta not provided
Namespace(alpha=None, beta=None, charlie=True, delta=False)
Возможно, мне нужно заняться этим за пределами argparse , но хотел обратиться к сообществу и узнать, не упустил ли я что-то или неправильно понял концепцию.
Подробнее здесь: https://stackoverflow.com/questions/792 ... s-provided
Мобильная версия