2014-06-13 2 views
1

저는 Python에서 명령 행 매개 변수를 제공하기 위해 ArgParse를 사용하고 있습니다. 인쇄에 우리가 번호 대신 몇 가지 문자를 입력 할 경우 함수에서 명령 행 매개 변수의 이름을 추출하십시오.

$python a.py --quality 10 
You gave quality = 10 

, 내가 인수 이름 "품질"을 인쇄하려면 :

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("--quality", help="enter some quality limit") 
args = parser.parse_args() 
print "You gave quality = %s" % str(args.quality) 

def is_number(s): 
    try: 
     val = int(s) 
    except ValueError: 
     print "That is not an int!" 

is_number(args.quality) 

나는 다음이 실행 a.py로이 저장된 "함수는 int가 아닌 함수입니다. 인수의 이름을 추출하여 거기에서 사용할 수있는 방법은 무엇입니까? 더 많은 명령 줄 매개 변수가 있으므로 어떤 매개 변수가 int가 아닌지 명시하는 명시적인 오류가 필요합니다.

+3

add_argument를 사용하면 입력 유형을 지정할 수 있습니다. 단지 'type = int'를 추가하십시오. 이렇게하면 예외 처리기 내부에서 catch 할 수 있다고 생각되는 오류가 발생합니다. – Ben

+1

감사합니다 Ben.It 완벽하게 작동합니다. – Rgeek

답변

2

한 가지 방법은 is_number을 다시 작성하여 인수 이름을 문자열로 사용하는 것입니다.

def is_number(args, argname): 
    try: 
     int(getattr(args, argname)) 
    except ValueError: 
     print argname, "is not an integer" 

is_number(args, "quality") 

는 그러나 argparsetype 인수를 사용하는 벤의 제안이 더 좋다.

관련 문제