模块名称在变量中时导入模块

时间:2012-11-28 04:52:30

标签: python python-2.7

  

可能重复:
  Dynamic module import in Python

我正在编写一个小脚本,它从目录中获取文件的名称,并将其传递给另一个模块,然后导入该文件。

所以流程就像 1)获取模块名称(将其存储在变量中) 2)将此变量名称传递给模块 3)导入名称存储在变量名称

中的模块

我的代码就像

data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))]
hello = data_files[0]
modulename = hello[0].split(".")[0]

import modulename

问题是当它到达import语句时,它将modulename作为实际模块名称而不是存储在此变量中的值。我不确定它在python中是如何工作的,任何解决这个问题的帮助都会很棒

2 个答案:

答案 0 :(得分:45)

您想要内置的__import__功能

new_module = __import__(modulename)

答案 1 :(得分:25)

importlib可能是要走的路。它的文档是here。对于most uses.

,它通常比__import__更受欢迎

在您的情况下,您将使用:

import importlib
module = importlib.import_module(module_name, package=None)