Как сказал hpaulj в своем комментарии, вы должны использовать подпарсер следующим образом:
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-delete', '--delete', action='store_true')
group.add_argument('-close', '--close',action='store_true')
print parser.parse_args()
РЕДАКТИРОВАТЬ ===== (используя ваш первоначальный пример)
import argparse
def inputparser():
parser = argparse.ArgumentParser(description='data management help')
subparsers = parser.add_subparsers()
parser_data_management = subparsers.add_parser('dm', help='data management help')
parser_data_management.set_defaults(which="dm")
group = parser_data_management.add_mutually_exclusive_group(required=True)
group.add_argument('-delete', '--delete', nargs="+", help="Delete index, snapshot, or repository. Optional: If deleting an index, specify fields or log type to delete.")
group.add_argument('-close', '--close', nargs="+", help="Close index or indices. Optional: specify fields or log type to close.")
group.add_argument('-open', '--open', nargs="+", help="Open index or indices")
group.add_argument('-restore', '--restore', nargs="+", help="Restore snapshot")
group.add_argument('-save', '--save', nargs="+", help="Create snapshot or repository")
group.add_argument('-compress', '--compress', nargs="+", help="Shrink index")
group.add_argument('--watcher', '--watcher', nargs="+", help="Create a watcher")
print parser_data_management.parse_args()
inputparser()
Nothe ((required = True) в определении группы, что заставит вас использовать только один из аргументов.Ни один из аргументов не должен быть обязательным = True, иначе это приведет к ошибке.