Python 使用argparse添加参数
我对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 现在在命令行中
#!/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_参数
行,并查看响应中的更改。