Python如何从变量中的argparse获取值,而不是变量名?

Luc*_*fer 3 python string argparse

如果我执行args.svc_name,则期望与args.option1等效,因为svc_name的值为option1。但是我收到“名称空间对象没有属性'svc_name's”的错误

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)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

met*_*ter 7

ArgumentParser类公开密钥直接属性,而不是一个映射,因此要获得属性,直接人会简单地直接访问它。根据问题的示例,它就是

print(args.option1)
Run Code Online (Sandbox Code Playgroud)

如果希望使用其他变量(例如,svc_name来自问题)来存储属性/标志以从argparser获取值,只需使用将其转换为映射(即dictvars,然后调用get方法

print(vars(args).get(svc_name))
Run Code Online (Sandbox Code Playgroud)

或者,getattr(args, svc_name)