【发布时间】:2011-08-16 19:55:00
【问题描述】:
为什么 argparse 不解析这些参数?
--foo 1 2 3 bar
使用
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')
parser.add_argument('bar')
这给出了以下错误:
错误:参数太少
如果我先传递 bar 参数,它会起作用:
bar --foo 1 2 3
现在,这本身并不算太糟糕。我可以先使用位置参数,只是这种行为与 argparse 为我们创建的帮助不一致,后者指出 bar 应该是最后一个:
用法:argparsetest.py [-h] [--foo FOO [FOO ...]] 酒吧
那么如何使用一致的帮助文本来完成这项工作?
这是一个完整的test program。
【问题讨论】:
-
刚才遇到了同样的问题。可以使用
--来结束nargsglobbing,因此--foo 1 2 3 -- bar应该可以在上面的示例中使用。在我看来,它确实应该自动解决,保留位置参数所需的参数数量。在bugs.python.org/issue9338 和bugs.python.org/issue9182 上有关于这个未决问题的讨论(至少应该清楚地记录在案)。 -
--停止列表真是太酷了。这是我最喜欢的答案。
标签: python command-line command-line-arguments argparse