2017-04-26 10 views
1

args.svc_nameを実行すると、svc_nameの値がoption1であるため、args.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クラスは、キーをマッピングではなく直接属性として公開します。したがって、属性を直接取得するには、キーを直接アクセスするだけです。 1つの願いが単に回し、argparserから値を取得する属性/フラグを格納するためのいくつかの他の変数(質問から例えばsvc_name)を持っている場合は質問から例のように、それは単に

print(args.option1) 

だろうそれvarsを使用してマッピング(すなわちdict)にして、getメソッド

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

または代わりに、getattr(args, svc_name)呼び出します。

+0

それは機能します!ありがとうございました! –

関連する問題