【发布时间】:2012-01-29 21:50:55
【问题描述】:
我正在使用 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
这是为什么?
【问题讨论】:
-
顺便说一句,似乎是known bug,已针对最近的 Python 版本进行了修复。
标签: python argparse python-2.6 subcommand python-3.1