最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】python中枚举(enumerate/iterate)域名(namespace)变量

Python crifan 5060浏览 0评论

【问题】

已经获得了对应的namespace的变量:

    newParser = argparse.ArgumentParser();
    newParser.add_argument("-u", "--username", dest="username_argparse", help="Your user name");
    newParser.add_argument("-a", "--age", type=int, dest="age_argparse", help="Your age");
    args = newParser.parse_args();
    
    print "args=",args; #args= Namespace(age_argparse=1000, username_argparse='crifanLi')
    print "type(args)=",type(args); #type(args)= <class 'argparse.Namespace'>

 

现在想要能够枚举其中的args变量,获得其中的key,即age_argparse和username_argparse。

【解决过程】

1.找了半天,

最终是参考:

[Tutor] argparse: how to use the returned Namespace object?

使用__dict__的方式

    newParser = argparse.ArgumentParser();
    newParser.add_argument("-u", "--username", dest="username_argparse", help="Your user name");
    newParser.add_argument("-a", "--age", type=int, dest="age_argparse", help="Your age");
    args = newParser.parse_args();
    
    print "args=",args; #args= Namespace(age_argparse=1000, username_argparse='crifanLi')
    print "type(args)=",type(args); #type(args)= <class 'argparse.Namespace'>
    
    argsDict = args.__dict__;
    print "parsed argsDict=",argsDict; #parsed argsDict= {'age_argparse': 1000, 'username_argparse': 'crifanLi'}

然后再通过argsDict.keys()就可以得到对应的key了。

2. 另外也参考:

Log the values of argparse in python

知道了,也可以通过vars()的方式:

    newParser = argparse.ArgumentParser();
    newParser.add_argument("-u", "--username", dest="username_argparse", help="Your user name");
    newParser.add_argument("-a", "--age", type=int, dest="age_argparse", help="Your age");
    args = newParser.parse_args();
    
    print "args=",args; #args= Namespace(age_argparse=1000, username_argparse='crifanLi')
    print "type(args)=",type(args); #type(args)= <class 'argparse.Namespace'>
    
    argsDict = args.__dict__;
    print "parsed argsDict=",argsDict; #parsed argsDict= {'age_argparse': 1000, 'username_argparse': 'crifanLi'}
    
    argsVars = vars(args);
    print "argsVars=",argsVars; #argsVars= {'age_argparse': 1000, 'username_argparse': 'crifanLi'} 

 

获得对应的dict变量。

 

3.另外也参考比人中提到的,官网的解释:

class argparse.Namespace

再次知道了vars。

 

【总结】

对于namespace的args,可以通过args.__dict__或者vars(args)的方式,获得对应的dict类型的argsDict变量,然后就可以再去枚举,获得对应的key(和value)了。

转载请注明:在路上 » 【已解决】python中枚举(enumerate/iterate)域名(namespace)变量

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
88 queries in 0.178 seconds, using 22.11MB memory