Подкоманда argparse python с зависимостью и конфликтом

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

/tool.py download --from 1234 --interval 60

/tool.py download --build 1432

/tool.py clean --numbers 10

Итак, я хотите использовать argparse для реализации:

  1. убедитесь, что '--from' и '--interval' всегда используются вместе
  2. убедитесь, что '--build' никогда не используется с другими аргументами

Но я не нашел способ связать '--from' и '--internal' с группой, а затем сделать группу взаимоисключающей с помощью '--build'.

Ниже приведен мой текущий код, и он делает только '- from 'и' --build 'исключают друг друга. Ни убедитесь, что «--from» и «--interval» объединяются, ни «--interval» и «--build» являются взаимоисключающими.

parser = argparse.ArgumentParser(description='A Tool')
subparsers = parser.add_subparsers(help='sub-command help')

#create the parser for the 'download' command
download_parser = subparsers.add_parser('download', help='download help')
download_parser.add_argument('--interval', dest='interval', type=int,help='interval help')
group = download_parser.add_mutually_exclusive_group()
group.add_argument('--from',type=int, help='from help')
group.add_argument('--build', type=int, help='interval help')

Например,

/ tool. py загрузка --from 1234

не должна быть разрешена, потому что '--from' должен работать с '--interval'. Но мой код принимает это молча.

И

/tool.py загрузка --interval 1234 --build 5678

не должна быть разрешена, потому что '--build' не может использоваться с другим аргументом. Но мой код тоже принимает это.

Мы будем очень признательны за любые предложения. Спасибо.

7
задан Landy 2 March 2011 в 10:08
поделиться