正如文档所示:
argparse.REMAINDER。所有剩余的命令行参数都被收集到一个列表中。这对于调度到其他命令行实用程序的命令行实用程序通常很有用:
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo')
>>> parser.add_argument('command')
>>> parser.add_argument('args', nargs=argparse.REMAINDER)
>>> print parser.parse_args('--foo B cmd --arg1 XX ZZ'.split())
Namespace(args=['--arg1', 'XX', 'ZZ'], command='cmd', foo='B')
我试图将其用于完全相同的目的,但在某些情况下,这对我来说似乎是错误的(或者我的概念可能是错误的):
import argparse
a = argparse.ArgumentParser()
a.add_argument('-qa', nargs='?')
a.add_argument('-qb', nargs='?')
a.add_argument('rest', nargs=argparse.REMAINDER)
a.parse_args('-qa test ./otherutil bar -q atr'.split())
结果:
test.py: error: ambiguous option: -q could match -qa, -qb
因此,显然,如果otherutil
有这样的论点以某种方式与给定的论点“冲突” argparse
,它似乎无法正常工作。
我希望当argparse
达到REMAINDER
那种参数时,它只会用完列表末尾的所有字符串,而无需进一步解析。我能以某种方式达到这种效果吗?