У меня есть программа на Python, которая поддерживает список контактов, и я хочу, чтобы она поддерживала следующие параметры через командную строку:
- - show , принимает строковый аргумент
- - список , не принимает аргументов
- - добавить , принимает аргумент строки
- -число , принимает аргумент int
- - электронная почта , принимает аргумент строки
Что мне нужно:
prog [--show xyz | --list | --add xyz --number 123 --email abcd@xyz.com ]
Я пытался реализовать его с помощью подпарасеров следующим образом:
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
subparser1 = subparsers.add_parser('1')
subparser1.add_argument('--show', type=str, help="Shows the contact based on the given name provided as argument")
subparser1.add_argument('--list', action='store_true', help= "Prints all the contacts")
subparser2 = subparsers.add_parser('2')
subparser2.add_argument('--add', type=str, help="Adds a new contact by this name",required=True)
subparser2.add_argument('--number', type=int, help="The Phone Number for the new contact",required=True)
subparser2.add_argument('--email', type=str, help="Email address for the new contact",required=True)
Проблема в том, что я не хочу указывать номер / имя подпаратера, через который я хочу использоватькомандной строки.
Например:
prog.py 1 - списокprog.py 2 --add xyz --number 1234 --email abc@xyz.com
Я пытался заставить его работать с mutually_exclusive_group , но не смог.Есть ли способ обойти это использование?