При запуске скрипта вы должны пройти либо -g
, либо -s
. С помощью приведенного ниже кода он выдает следующую ошибку с переданными ей аргументами.Python - argparse требуется либо либо
{~/nsnitro}-> ./sg-arg.py status -g test.server
usage: sg-arg.py [-h] (-g SERVICEGROUP | -s SERVICENAME) {status} ...
sg-arg.py: error: one of the arguments -g/--servicegroup -s/--servicename is required
Код:
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
check = subparsers.add_parser('status')
check = parser.add_mutually_exclusive_group(required=True)
check.add_argument('-g', '--servicegroup', action='store', help='servicegroup name', type=servicegroup_status)
check.add_argument('-s', '--servicename', action='store', help='service name', type=servicegroup_status)
args = parser.parse_args()
Похоже, вы добавляете взаимоисключающую группу к мастер-синтаксическому анализатору, а не к подпараметру. например './sg-arg.py -g test.server status' был бы правильным вызовом в этом случае, я думаю. – mgilson