Я работаю с 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')
, однако когда я изменяю позиционный аргумент на 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
Почему так?