我正在使用argparse,并尝试混合使用子命令和位置参数,出现了以下问题。
以下代码可以正常运行:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser.add_argument('positional')
subparsers.add_parser('subpositional')
parser.parse_args('subpositional positional'.split())
上述代码将args解析为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
这是为什么呢?