我对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'键中。
我做错了什么?
欢呼声,
答案 0 :(得分:1)
您的问题是*
将匹配其后的所有内容。由于c
参数具有第一个*
,因此传入的所有内容都将以c
结尾。
如果您要在cj
中存储单个项目,在c
中存储单个项目,则可以执行以下操作:
parser = argparse.ArgumentParser(description="test")
parser.add_argument('c', nargs='+')
parser.add_argument('cj', nargs='+')
如果你想要的是:
{'cj': ['1'], 'c': ['cj']}
这是因为+
匹配单个参数。
答案 1 :(得分:0)
至少有两个问题:
nargs='*'
消耗它可以