- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如文档所示:
argparse.REMAINDER. All the remaining command-line arguments are gathered into a list. This is commonly useful for command line utilities that dispatch to other command line utilities:
>>> 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
类型的参数时,它只会用完列表末尾的所有字符串,而无需任何进一步的解析。我能以某种方式达到这种效果吗?
最佳答案
我在尝试将选项分派(dispatch)给底层实用程序时遇到了这个问题。我最终使用的解决方案是 nargs='*'
而不是 nargs=argparse.REMAINDER
,然后只使用“伪参数”--
将我的命令和底层工具的选项分开:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--myflag', action='store_true')
>>> parser.add_argument('toolopts', nargs='*')
>>> parser.parse_args('--myflag -- -a --help'.split())
Namespace(myflag=True, toolopts=['-a', '--help'])
这很容易记录在帮助输出中。
关于Python argparse REMAINDER 不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480062/
MVC3 中的助手是否在 Controller 和 View 中使用? 助手是放置常用 Controller 方法的正确位置吗? 我想创建一个通用方法来获取数据库中的所有子子 ID,并确保它位于正确的
有人可以阐明这两者之间的区别吗,因为它们存在于执行上下文中?我很难阅读 ECMA 262 v 5规范并清楚地看到差异。 谢谢你, 最佳答案 两者都是执行上下文的组件(相同类型),但它们有不同的用途(f
我是一名优秀的程序员,十分优秀!