python argparse - обязательная подкоманда - PullRequest
0 голосов
/ 25 июня 2018

У меня есть 3 аргумента в взаимоисключающей группе.Я хочу сделать новую обязательную подкоманду доступной для аргумента '-a', и этот аргумент должен быть доступен только для аргумента '-a'.

Каков наилучший способ сделать это?Я попытался найти и прочитать это argparse docs Но пока не понял.

parser = argparse.ArgumentParser(prog='med-tool test', description='med-tool')
group = parser.add_mutually_exclusive_group(required=True)

parser.add_argument('-f', '--foo')
group.add_argument('-a', '--add', help ="Add device", metavar='')
group.add_argument('-d', '--get', help ="Get device", metavar='')
group.add_argument('-r', '--get', help ="Read device", metavar='')

args = parser.parse_args()

1 Ответ

0 голосов
/ 25 июня 2018

Просто добавьте required=True в group.add_argument().

group.add_argument('-a', '--add', help ="Add device", metavar='', required=True)

Это описано в документах, на которые вы ссылаетесь, параграф 15.4.3. Метод add_argument () и здесь .

Я не уверен, что это действительно то, что вам нужно, потому что нет смысла добавлять обязательный аргумент во взаимоисключающую группу. Вы, вероятно, хотите изменить его на:

parser.add_argument('-a', '--add', help ="Add device", metavar='', required=True)
...