2017-04-26 12 views
1

args.svc_name을 수행하면 svc_name 값이 option1이므로 args.option1과 동등한 값을 예상합니다. 하지만 " '네임 스페이스'객체에 'svc_name'속성이 없습니다."파이썬은 변수의 이름이 아닌 변수로부터 argparse 값을 얻는 방법을 알고 있습니까?

parser = argparse.ArgumentParser(prog=None,description="test") 
parser.add_argument("--option1", nargs="?",help="option") 
args = parser.parse_args() 
svc_name = "option1" 
print (args.svc_name) 

누군가 나를 도울 수 있습니까?

답변

2

ArgumentParser 클래스는 키를 매핑이 아닌 직접 속성으로 표시하므로 직접 속성을 얻으려면 키를 직접 액세스 할 수 있습니다. 질문의 예에 따라, 단순히 하나의 소원이 argparser에서 값을 취득하는 속성/플래그를 저장하기 위해 (질문에서 예를 들어 svc_name) 다른 변수를 가지고있는 경우

print(args.option1) 

, 간단하게 설정 될 것이다 매핑 (즉, dict)으로는 vars를 사용하여 다음 get 메소드

print(vars(args).get(svc_name)) 

또는 대안 적으로, getattr(args, svc_name)에게 문의하십시오.

+0

그게 효과가 있습니다! 고맙습니다! –