python argparse,如何通过名称引用args

时间:2014-06-09 19:20:51

标签: python argparse

这是一个关于arthon中的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:我有很多变数,我不想重新分配每一个

3 个答案:

答案 0 :(得分:2)

首先,我建议使用args说明符。它清楚地说明了lib的来源。也就是说,如果你发现你经常引用一个参数,你可以将它分配给一个较短的名字:

lib = args.lib

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

globals().update(args.__dict__)

答案 1 :(得分:1)

当然,只需添加一行即可将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'

答案 2 :(得分:0)

当然......但是因为你的意思并不意味着你应该...而只是因为踢腿globals().update(dict(args._get_kwargs()))