Как я могу использовать argparse для анализа группы взаимоисключающих аргументов по умолчанию, чтобы только один из аргументов получил значение по умолчанию? - PullRequest
1 голос
/ 21 апреля 2020

У меня есть нижеприведенная группа взаимоисключающих аргументов (group), где я хочу, чтобы по умолчанию были args.thread=10 и args.process=None, если не указаны ни --thread, ни --process. Более того, если указано --thread или --process, для другого следует установить значение None.

При моем текущем коде результат всегда будет args={ ..., 'thread': 10, 'process': 10, ... }.

Как можно Я исправляю свой код, чтобы получить ожидаемое поведение?

fmt = lambda prog: argparse.HelpFormatter(prog, width=140)
p = argparse.ArgumentParser(description='Atlassian Watchdog: Search through all resources on Confluence, Bitbucket, or Jira looking for secrets.', formatter_class=fmt)

group = p.add_argument_group('Concurrency')
group = group.add_mutually_exclusive_group()
group.add_argument('-t', '--thread', type=int, default=10, metavar='N', dest='thread', help='number of threads (default: %(default)s)')
group.add_argument('-p', '--process', type=int, default=10, metavar='N', dest='process', help='number of subprocesses (default: %(default)s)')
...