2017-04-26 87 views
1

如果我這樣做了args.svc_name,那麼我期望等同於args.option1,因爲svc_name的值是option1。但我得到的錯誤「‘命名空間’對象有沒有屬性‘svc_name的’」Python如何從變量中獲取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類將鍵作爲直接屬性而不是映射公開,因此要直接獲取屬性,只需直接訪問該屬性即可。按照從提問的例子中,將僅僅是

print(args.option1) 

如果一個希望有(從問題例如svc_name)一些其它變量來存儲屬性/標誌從argparser獲得的值,簡單地把它變成一個映射(即dict)使用vars,然後調用get方法

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

或者,getattr(args, svc_name)

+0

工作!謝謝! –