【问题】
已经获得了对应的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.另外也参考比人中提到的,官网的解释:
再次知道了vars。
【总结】
对于namespace的args,可以通过args.__dict__或者vars(args)的方式,获得对应的dict类型的argsDict变量,然后就可以再去枚举,获得对应的key(和value)了。
转载请注明:在路上 » 【已解决】python中枚举(enumerate/iterate)域名(namespace)变量