Я пытаюсь иметь взаимоисключающую группу между различными группами: У меня есть аргументы -a, -b, -c, и я хочу иметь конфликт с -a и -b вместе , или -a и -c вместе. Помощь должна показывать что-то вроде [-a | ([-До нашей эры])].Использование взаимоисключающего между группами
Следующий код, кажется, не имеют взаимоисключающие варианты:
import argparse
parser = argparse.ArgumentParser(description='My desc')
main_group = parser.add_mutually_exclusive_group()
mysub_group = main_group.add_argument_group()
main_group.add_argument("-a", dest='a', action='store_true', default=False, help='a help')
mysub_group.add_argument("-b", dest='b', action='store_true',default=False,help='b help')
mysub_group.add_argument("-c", dest='c', action='store_true',default=False,help='c help')
parser.parse_args()
PARSING различные комбинации - все проход:
> python myscript.py -h
usage: myscript.py [-h] [-a] [-b] [-c]
My desc
optional arguments:
-h, --help show this help message and exit
-a a help
> python myscript.py -a -c
> python myscript.py -a -b
> python myscript.py -b -c
Я попытался изменить mysub_group
быть add_mutually_exclusive_group
превращает все в обоюдно не включенные в другие категории:
> python myscript.py -h
usage: myscript.py [-h] [-a | -b | -c]
My desc
optional arguments:
-h, --help show this help message and exit
-a a help
-b b help
-c c help
Как добавить аргументы для [-a | ([-До нашей эры])]?
Не совсем то, что я хочу, так как это не дает мне возможность просто иметь -c (без -b). – itzhaki
Это правда, мои извинения. Я не думаю, что вы можете получить именно то, что хотите, с помощью argparse, но я все же считаю, что docopt - хороший выбор, вы просто добавили бы использование : myscript.py [-h | -a | [-b -c]] к вашей докстерингу, и все будет хорошо для вас –