【发布时间】:2012-11-12 15:29:58
【问题描述】:
我想知道是否可以在带有可选参数的参数后面加上位置参数。理想情况下,输入到命令行的最后一个参数将始终适用于“testname”。
import argparse
parser = argparse.ArgumentParser(description='TAF')
parser.add_argument('-r','--release',nargs='?',dest='release',default='trunk')
parser.add_argument('testname',nargs='+')
args = parser.parse_args()
我希望这两个调用都将 Smoketest 应用于 testname,但第二个调用会导致错误。
>> python TAF.py -r 1.0 smoketest
>> python TAF.py -r smoketest
TAF.py: error: too few arguments
我意识到将位置参数移到前面会导致可选参数的正确行为,但这不是我正在寻找的格式。选择标志看起来很有吸引力,但它会引发错误而不是忽略不匹配的项目。
编辑: 我找到了一种解决方法。如果有人有更好的解决方案,我将不胜感激。
import argparse
parser = argparse.ArgumentParser(description='TAF')
parser.add_argument('-r','--release',nargs='?',dest='release',default='trunk')
parser.add_argument('testname',nargs=argparse.REMAINDER)
args = parser.parse_args()
if not args.testname:
args.testname = args.release
args.release = ''
【问题讨论】: