확실한 것을 놓치고 있어야합니다. 목표는 첫 번째 필수 매개 변수, 두 번째 선택적 매개 변수 및 기타 나머지 매개 변수를 선택적으로 사용하여 argparse를 사용하는 것입니다.Python argparse : 선택적 매개 변수를 nargs = argparse.REMAINDER와 결합하십시오.
문제를 표시하기 위해 두 개의 테스트 파서를 만들었습니다. 그들 사이의 유일한 차이점은 nargs = argparse.REMAINDER를 하나, nargs = '*'를 다른 것에 사용하는 것입니다.
def doParser1(argsin):
parser = argparse.ArgumentParser(description='Parser demo.')
parser.add_argument('req1', help='first required parameter')
parser.add_argument('--opt1', help='first optional parameter')
parser.add_argument('leftovers', nargs=argparse.REMAINDER,
help='all the other parameters')
argsout = parser.parse_args(args=argsin)
print argsout
return argsout
def doParser2(argsin):
parser = argparse.ArgumentParser(description='Parser demo.')
parser.add_argument('req1', help='first required parameter')
parser.add_argument('--opt1', help='first optional parameter')
parser.add_argument('leftovers', nargs='*',
help='all the other parameters')
argsout = parser.parse_args(args=argsin)
print argsout
return argsout
추가 매개 변수가없는 경우 parser2가 작동합니다. 이 parser1 파서 한 다음에 입력된다 : 추가 파라미터가 있으면
input: ['req1value', '--opt1', 'opt1value']
Namespace(leftovers=['--opt1', 'opt1value'], opt1=None, req1='req1value')
Namespace(leftovers=None, opt1='opt1value', req1='req1value')
상기 OPT1 값 parser1에서 누락되고 parser2는 혼동 얻는다 :
input: ['req1value', '--opt1', 'opt1value', 'r1', 'r2']
Namespace(leftovers=['--opt1', 'opt1value', 'r1', 'r2'], opt1=None, req1='req1value')
usage: py-argparse.py [-h] [--opt1 OPT1]
[-leftovers [LEFTOVERS [LEFTOVERS ...]]]
req1
py-argparse.py: error: unrecognized arguments: r1 r2
예상 출력 같아야
Namespace(leftovers=['r1', 'r2'], opt1='opt1value', req1='req1value')
이것은 간단한 사례 여야하며 여기에있는 내용이 실제로 수행하려고 시도하는 것으로부터 단순화 된 것 같습니다. 남은 부분을 선택 사항으로 만들려고 시도했지만 다른 옵션은 다양하지만 더 좋은 것은 없습니다.
도움을 주시면 감사하겠습니다.
나는 그것이 단순해야한다는 것을 알고있었습니다. 나는 어디에서나 문서에서 그것을 보지 못했지만, nargs = argparse.REMAINDER에서 작동합니다. 그리고 그게 전부입니다. 감사. – OPunWide