Python argparse позиционные аргументы и субкоманды

Я работаю с 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

Почему так?

11
задан 29 December 2011 в 13:35
поделиться