argparse
플래그를 결합 할 때 다른 결과가 나타납니다 (-x -y
>-xy
). 그것은 말로 설명하기 어려운, 그래서 나는 다음과 같은 최소한의 설정에 문제를 감소 :python : argparse에서 이상한 오류가 발생했습니다.
# test.py
def invalid_argument_type(x):
raise Exception("can't parse this") # in my code, it doesn't *always* fail
parser = argparse.ArgumentParser()
parser.add_argument('args', type = invalid_argument_type)
parser.add_argument('-x')
print parser.parse_args()
을 지금 잘못이 프로그램 수익률 예상치 못한 결과를 호출. 첫 번째 명령은 두 번째 잘못된 플래그가 정확하고, 세 번째는 두 번째와 동일해야합니다 : 플래그가 결합 될 때, '알 수없는 플래그 "오류가 삼킨 것으로 보인다
$ python test.py -x foo
Namespace(args=[], x='foo')
$ python test.py -A -x foo
test.py: error: unrecognized arguments: -A
$ python test.py -Ax foo
Exception: can't parse this
-x
및 foo
정규 인수로 취급됩니다. -A
플래그가있는 경우 -A
및 -x
모두 모든 시나리오에서 예상대로 작동합니다.
이렇게하면 매우 혼란스러운 오류 메시지가 나타납니다.
argparse
을 잘못 사용하고 있습니까? 이 문제를 해결할 수있는 방법이 있습니까? 아니면 오류 처리를 직접 처리해야합니까?
그러나 플래그를 합치면 플래그가 정상적으로 작동하는 것 같습니다. ( – slezica
맞아요, 제 대답이 약간 업데이트 되었어요. 기본적으로'-Ax'와 알려진 인수가 일치하지 않아서 안됩니다. 그것들을 분리 할 곳을 알지 못하기 때문에 단순히''-Ax''를 무효로 표시합니다. – poke
'argparse'의 책임을 줄이고 나중에 에러 처리를 할 것입니다. – slezica