2013-04-14 4 views
1

: args_list에 오류가있는 경우Argparse.ArgumentParser.parse_args()에 인수 오류가 발생하지 않도록하려면 어떤 방법이 있습니까? 예를 들어

import argparse 

parser = arparse.ArgumentParser() 
# parser.add_argument(...) ... 
args = parser.parse_args(args_list) 

문제는, parser.parse_args가 자동으로 종료됩니다. 그 대신 친숙한 예외를 발생시키는 설정이 있습니까? 나는 주위에 어떤 방법이 있다면 SystemExit을 잡아서 그것으로부터 필요한 에러 메시지를 추출하지 않기를 바란다.

+0

가능 중복 [파이썬 : argparse.ArgumentError 상승 후 argparse은 일반적인 오류가 발생 (http://stackoverflow.com/questions/15691762/python-after-raising-argparse -argumenterror-argparse-raises-generic-error) –

+0

여기에 당신의 문제가 해결되었습니다. –

+1

[Python argparse 및 종료 상태 코드 제어/재정의 가능한 중복] (http://stackoverflow.com/questions/5943249/python-argparse-and-controlling-overriding-the-exit-status-code) –

답변

5

당신은

args, unknown = parser.parse_known_args(args_list) 

는 그런 알 수없는 인수는 단순히 unknown에 반환됩니다 사용할 수 있습니다. 예를 들어

,

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('--bar', action='store_true') 
parser.add_argument('cheese') 
args, unknown = parser.parse_known_args(['--swallow', 'gouda', 'african']) 
print(args) 
# Namespace(bar=False, cheese='gouda') 

print(unknown) 
# ['--swallow', 'african']