Python argparse,如何通过参数的名称来引用它们



这是一个关于python中argparse的问题,可能很简单

import argparse
parser=argparse.ArgumentParser()
parser.add_argument('--lib')
args = parser.parse_known_args()
if args.lib == 'lib':
    print 'aa'

这可以工作,但不是调用args。Lib,我只想说' Lib '(我不想输入更多),是否有一种方法可以将所有的args变量导出到模块之外(即改变范围)。这样我就可以直接检查lib的值,而不是在前面指定模块的名称

PS:我有很多变量,我不想重新分配每一个

首先,我建议使用args说明符。很明显,lib是从哪里来的。也就是说,如果你发现你经常引用一个参数,你可以给它赋一个更短的名字:

lib = args.lib

有一种方法可以一次性将所有属性转储到全局命名空间中,但它不适用于函数的本地命名空间,并且没有很好的理由使用globals是一个坏主意。我不认为保存几个args.实例是一个足够好的理由。也就是说,在这里:

globals().update(args.__dict__)

当然,只需添加一行将args.lib分配给lib

import argparse
parser=argparse.ArgumentParser()    
parser.add_argument('-lib')    
args = parser.parse_known_args()
lib = args.lib 
if lib == 'lib':
    print 'aa'

…但是你不能就意味着你应该……但只是为了好玩globals().update(dict(args._get_kwargs()))

最新更新