为什么argparse不会解析这些参数?
--foo 1 2 3 bar
使用
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')
parser.add_argument('bar')
会出现以下错误:
错误:参数太少
如果我首先通过了条形参数,它可以工作:
bar --foo 1 2 3
现在,这本身并不算太糟糕。我可以忍受首先使用位置参数,这只是因为这种行为与我们为argparse创建的帮助不一致,它指出bar应该是最后一个:
用法:argparsetest.py [-h] [ - foo FOO [FOO ...]]栏
那么如何使用一致的帮助文本来完成这项工作呢?
这是一个完整的test program。
答案 0 :(得分:4)
nargs='+'
告诉argparse将所有剩余的args收集在一起,因此包含bar
。没有神奇的方法可以猜测你希望bar
本身是一个有意义的论证,而不是--foo
所采用的算法的一部分。
文档中的示例引用了一个简单的--foo
参数,而不是一个nargs='+'
参数。一定要了解其中的区别。
答案 1 :(得分:3)
也许尝试在add_argument中执行--input --output flags并将这些选项设置为required = True?
http://docs.python.org/dev/library/argparse.html#the-add-argument-method