2016-10-07 3 views
4

의 특정 인수의 도움말 문자열의 단지 내용을 인쇄하려면?어떻게 인수 파서 라이브러리 오브젝트의 특정 인수에 대한 도움말 문자열에 액세스 할 수있는 방법이 있나요 ArgParse

옵션이 명령 줄에있는 경우 도움말 문자열 내용을 인쇄하려고합니다. 아니요 ArgumentParser가 ArgumentParser.print_help를 통해 표시 할 수있는 전체 도움말 텍스트입니다.

그래서 그 라인을 따라 뭔가 :

parser = argparse.ArgumentParser() 

parser.add_argument("-d", "--do_x", help='the program will do X') 

if do_x: 
    print(parser.<WHAT DO I HAVE TO PUT HERE?>('do_x') 

그리고이 필요한 행동을하다

$ 프로그램이 프로그램이

을 할 것입니다 -d X

+0

그래서 당신은 그냥 인쇄 만들고 싶어 할'X'을 할 것입니다 프로그램은 때마다 인수'-d'을 구문 분석? 또는 무엇을? 응답에 대한 –

답변

3

있다 parser._option_string_actions 이것은 옵션 문자열 (-d 또는 --do_x) 및 Action objects. Action.help 속성에는 도움말 문자열이 있습니다.

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument("-d", "--do_x", action='store_true', 
        help='the program will do X') 
args = parser.parse_args() 
if args.do_x: 
    print(parser._option_string_actions['--do_x'].help) 
    # OR print(parser._option_string_actions['-d'].help) 
2

parser._actionsAction 객체의 목록입니다. 파서를 만들 때 객체를 잡을 수도 있습니다.

a=parser.add_argument(...) 
... 

If args.do_x: 
     print a.help 

대화 형 세션에서 argparse을 (를) 재생하십시오. 그러한 과제에서 a을보십시오.

+0

덕분에, @falsetru의 사람은 나에게 더 간단한 것 같지만 나는 이것이 어떤 사람들은 ._' 속성을'사용 좋아하지 않아 그냥 내 스타일 – Diego

+1

것 같다. 그러나 그들은 또한 "a = parser ..."가 문서화되어 있지 않다고 불평한다. – hpaulj

+0

동의합니다. API로 함수로 사용하는 것이 좋습니다. parser._option_string_actions [ '- do_x']. help는 더 자명 해 보이며 추가 변수를 만들 필요가 없습니다. 그러나 하드 코딩 된 텍스트 문자열은 항상 깨지기 쉽습니다 (+ 국제화도 마찬가지입니다). 따라서 다른 한편으로는 a = parser ... 접근법이 더 강력 할 수 있습니다. – Diego