这是一个关于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()))