Python 使用argparse添加参数

Python 使用argparse添加参数,python,argparse,Python,Argparse,我对argparse有一个小问题: #!/usr/bin/python2.6 #test.py import argparse parser = argparse.ArgumentParser(description="test") parser.add_argument('c', nargs='*') parser.add_argument('cj', nargs='*') results = vars(parser.parse_args()) print results 现在在命令行中

我对argparse有一个小问题:

#!/usr/bin/python2.6
#test.py
import argparse

parser = argparse.ArgumentParser(description="test")
parser.add_argument('c', nargs='*')
parser.add_argument('cj', nargs='*')

results = vars(parser.parse_args())
print results
现在在命令行中输入:“test.py c 1”

它返回这个

{'cj':[],'c':['c','1']}

但是如果我输入“test.py cj 1”

它返回以下内容:

{'cj':[],'c':['cj','1']}

我希望第二个示例在“cj”键中返回值,但它在“c”键中持续出现

我做错了什么


干杯,

您的问题是
*
将匹配它后面的所有内容。因为
c
参数具有第一个
*
参数,所以传入的所有内容都将以
c
结尾

如果要在
cj
中存储单个项目,在
c
中存储单个项目,可以执行以下操作:

parser = argparse.ArgumentParser(description="test")
parser.add_argument('c', nargs='+')
parser.add_argument('cj', nargs='+')
如果您想要的是:

{'cj': ['1'], 'c': ['cj']}

这是因为
+
与单个参数匹配。

至少存在两个问题:

  • 您可以使用位置参数(它们不以“-”或“-”开头),但可以在命令行中提供它们的名称
  • 您可以使用
    nargs='*'
    来使用它可以使用的所有参数

尝试交换
add_参数
行,并查看响应中的更改。