【问题标题】:Python how to get value from argparse from variable, but not the name of the variable?Python如何从变量的argparse中获取值,而不是变量的名称?
【发布时间】:2017-09-23 06:45:54
【问题描述】:

如果我执行 args.svc_name,我希望它等同于 args.option1,因为 svc_name 的值是 option1。但我收到“'Namespace' 对象没有属性 '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)

谁能帮帮我?

【问题讨论】:

    标签: python string argparse


    【解决方案1】:

    ArgumentParser 类将键公开为直接属性而不是映射,因此要直接获取属性,只需直接访问它即可。根据问题中的示例,它只是

    print(args.option1)
    

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

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

    或者,getattr(args, svc_name)

    【讨论】:

    • 谢谢。请注意(就我而言)--num-max 将转换为 args.num_max(即破折号转换为下划线)。
    • @SridharSarnobat 是的,如documented - “任何内部- 字符都将转换为_ 字符,以确保字符串是有效的属性名称”;此外,如果提供了dest,那将是相应的属性名称。
    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2022-11-02
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多