Что необходимо использовать для достижения этой цели: взаимоисключающая группа :
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-k', action='store_true')
group.add_argument('-r', action='store_true')
group.add_argument('-b', action='store_true')
group.add_argument('-p', action='store_true')
parser.parse_args()
Как видно из приведенного ниже примера, только одна опция во взаимоисключающей группедопускается одновременно:
$ python test.py -k -r -b -p
usage: test.py [-h] [-k | -r | -b | -p]
test.py: error: argument -r: not allowed with argument -k
Чтобы проверить, какой флаг был передан, вам просто нужно посмотреть на объект argparse.Namespace
, возвращаемый методом parse_args
(переданный флаг будет установлен на True
).