2013-02-19 3 views
8

플러그인을 호출하는 특정 구성 파일이 있습니다. 이러한 플러그인에 인수를 전달할 수 있습니다. 이 config 파일은 또한 런타임에 임의의 명령을 호출 할 수있게합니다.기본 argparse -h 동작 무시

플러그인은 많은 인수를 사용합니다. 그 중 하나는 -h이며 --help을 나타냅니다. 자, 내 문제는 내 자신의 Python 스크립트를 호출 할뿐만 아니라 몇 가지 인수를 전달하는 것입니다. 나는 argparse를 사용 중이며 나머지 설정과 일관되게하기 위해 -h 플래그를 만들었습니다. 놀랍게도, argparse는 자신의 사업을 신경 써주는 대신 argparse.ArgumentError: argument -h/--help: conflicting option string(s): -h을 제공합니다.

이 문제를 방지하는 방법이 있습니까?

나는 대부분의 사람들이 -h이 도움을 줄 것을 기대하지만 그것은 내 자신의 스크립트이고 나는 argparse devs보다 플래그를 사용하고 싶은 것을 더 잘 알고 있다고 생각한다.

+0

당신은 실제로 argparse 개발자보다 더 잘 알고 있습니다. 정확히 왜 당신이 의미하는 바를 말하고 그들이 당신의 마음을 정확하게 추측하지 못하는지에 대한 이유입니다. 기본값'-h --help'는 너무 일반적이기 때문에 의미가 있습니다. 실수로 일반적인 기본 기대치와의 충돌이 발생했을 때 알려주는 것이 좋습니다. 당신이해야 할 일은 argparse에게 당신이 그렇게하려고 의도했음을 말해주는 것뿐입니다. – Ben

답변

11

봐. add_help라는 이름이 있는데, 기본값은 True입니다.

parser = argparse.ArgumentParser('Cool', add_help=False) 
parser.add_argument('-h', '--hi', action='store_true', dest='hi') 

예상대로 작동합니다.

+2

젠장, 나는'--help'를 유지하려고했으나'-h-'가 아니길 바랬다. – ThorSummoner

+8

@ThorSummoner,'parser.add_argument ('--help', action = 'help', help = '이 헬프 메시지를 보여주고 종료한다. ')'추가적으로'add_help = False'를 사용합니다. –

5

해당 항목을 억제하는 kwarg가 있습니다 (docs).
은 다음과 같이 파서 만들기 : ArgumentParser 인수에 대한 argparse documentation에서

parser = argparse.ArgumentParser(prog='PROG', add_help=False) 
+0

대단히 감사합니다! 나는 다른 답변을 맨 처음으로 표시 할 것이고 거의 동일합니다. 나는 문서에서 그것을 놓쳐 버렸음에 틀림 없다 ... –

+3

사실, 내 것이 처음이지만, 신경 쓰지 않아야한다 : P – wim

+0

오, 실제로 옳을 수도있다. 깊은 사과 - 긴 밤. –