위치 지정 인수를 가질 수 있는지 여부는 선택적 인수와 함께 인수 뒤에옵니다. 이상적으로 명령 행에 입력 된 마지막 인수는 항상 'testname'에 적용됩니다.argparse 위치 지정 인수 앞에 선택적 인수가 있습니다.
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()
두 호출 모두 testname에 smoketest를 적용하고 싶지만 두 번째 호출은 오류가 발생합니다.
>> python TAF.py -r 1.0 smoketest
>> python TAF.py -r smoketest
TAF.py: error: too few arguments
내가 전면에 위치 인수를 이동하는 선택적 매개 변수의 올바른 동작이 발생할 것이라고 실현, 그러나 이것은 내가 찾고 있어요 아주 형식이 아닙니다. 선택 플래그는 매력적인 대안처럼 보이지만 일치하지 않는 항목을 무시하는 대신 오류가 발생합니다.
편집 : 나는 이것에 대해 해커를 발견했습니다. 누군가가 더 좋은 해결책을 가지고 있다면 나는 그것을 고맙게 생각할 것이다. documentation에 명시된 바와 같이
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 = ''
응답 해 주셔서 감사합니다. 필자는 testname 인수에 대한 접두어를 추가하거나 두 번째 인수 앞에 나열한 것에 대해서도 언급했듯이 깔끔하게 마무리 할 수 있다는 것에 동의합니다. –