我想知道是否可以在带有可选参数的参数后面加上位置参数。理想情况下,输入命令行的最后一个参数将始终适用于“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 = ''