我正在使用 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
为什么是这样?