Argparse位置和可选参数的顺序不正确

Rei*_*und 7 python command-line command-line-arguments argparse

为什么argparse不会解析这些参数?

--foo 1 2 3 bar
Run Code Online (Sandbox Code Playgroud)

运用

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')                  
parser.add_argument('bar')
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

错误:参数太少

如果我先通过bar参数,它可以工作:

bar --foo 1 2 3   
Run Code Online (Sandbox Code Playgroud)

现在,这本身并不算太糟糕.我可以忍受首先使用位置参数,这只是因为这种行为与argparse为我们创建的帮助不一致,它指出bar应该是最后一个:

用法:argparsetest.py [-h] [ - foo FOO [FOO ...]]栏

那么如何使用一致的帮助文本来完成这项工作呢?

这是一个完整的测试程序.

Swe*_*eep 3

也许尝试执行 --input --output 标志并将这些选项设置为 add_argument 中的 required=True ?

http://docs.python.org/dev/library/argparse.html#the-add-argument-method