Próbuję mieć wykluczającą się grupę między różnymi grupami: Mam argumenty -a, -b, -c i chcę mieć konflikt z -a i -b razem lub -a i -c razem. Pomoc powinna pokazywać coś takiego jak [-a | ([-pne])].Używanie wzajemnie wykluczających się grup
Poniższy kod nie wydają się mają wzajemnie wykluczające się opcje:
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()
parsowania różne kombinacje - wszystkie pass:
> 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
Próbowałem zmieniając mysub_group
być add_mutually_exclusive_group
odwraca wszystko do wzajemnie wyłączne:
> 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
Jak mogę dodać argumenty dla [-a | ([-pne])]?
Nie bardzo tego chcę, ponieważ nie daje mi opcji po prostu -c (bez opcji -b). – itzhaki
To prawda, moje przeprosiny. Nie sądzę, że można uzyskać dokładnie to, co chcesz z argparse, ale nadal uważam, że docopt jest dobrym wyborem, wystarczy dodać użycie: myscript.py [-h | -a | [-b -c]] do twojego docstringu i wszystko będzie dla ciebie działało –