Я работаю с argparse и пытаюсь смешать подкоманды и позиционные аргументы, и возникла следующая проблема.
Этот код работает нормально:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser.add_argument('positional')
subparsers.add_parser('subpositional')
parser.parse_args('subpositional positional'.split())
Вышеприведенный код анализирует аргументы в Namespace(positional='positional')
, однако, когда я изменяю аргумент positional, чтобы иметь nargs = '?' как таковой:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser.add_argument('positional', nargs='?')
subparsers.add_parser('subpositional')
parser.parse_args('subpositional positional'.split())
Сбой:
usage: [-h] {subpositional} ... [positional]
: error: unrecognized arguments: positional
Почему это?