python,导入具有动态名称的文件

时间:2013-11-14 16:22:51

标签: python

伙计们,我想动态导入python文件和函数。模块名应该传递给像这样的函数:

def scrape(url, foo):
    modulename = url['modulename']
    import modulename
    modulename.modulename(url, foo)

这是错误的:

ImportError: No module named modulename

那么我们怎么能让python使用'modulename'作为变量?

谢谢!

2 个答案:

答案 0 :(得分:5)

您可以使用importlib.import_module()

def scrape(url, foo):
    import importlib
    modulename = importlib.import_module(url["modulename"])
    modulename.modulename(url, foo)

答案 1 :(得分:1)

您也可以使用

module = __import__('module_name')

示例:

module = __import__('math')
print module.sqrt(4)
>> 2

或者,如果您还想使用动态方法名称

module = __import__('math')
method =  getattr(module, 'sqrt')
method(4)
>> 2