使用for循环和名称列表导入python中的文件

时间:2015-07-27 19:01:12

标签: python string python-import

我正在尝试导入许多文件。我有一个字符串列表(myList),它是我要导入的模块的文件名。我要导入的所有文件都位于名为parentDirectory的目录中。此目录位于此代码所在的文件夹中。

到目前为止我所拥有的是:

myList = {'fileOne', 'fileTwo', 'fileThree'}
for toImport in myList:
    moduleToImport = 'parentDirectory.'+toImport
    import moduleToImport

此代码仅将moduleToImport视为模块的名称,但我希望代码能够理解它是字符串的变量。

This is the Error Code:
dule>
    import moduleToImport
ImportError: No module named moduleToImport

2 个答案:

答案 0 :(得分:4)

如果想要与import <modulename>具有相同的效果,那么一种方法是使用importlib.import_module()导入模块,然后使用globals()函数获取全局命名空间和在那里使用相同的名称添加导入的模块。

代码 -

myList = {'fileOne', 'fileTwo', 'fileThree'}
import importLib
gbl = globals()
for toImport in myList:
    moduleToImport = 'parentDirectory.'+toImport
    gbl[moduleToImport] = importlib.import_module(moduleToImport)

然后你可以使用 -

parentDirectory.fileOne.<something>

示例/演示 -

>>> import importlib
>>> globals()['b'] = importlib.import_module('b')
>>> b.myfun()
Hello

答案 1 :(得分:2)

myList = ['fileOne', 'fileTwo', 'fileThree']
modules = map(__import__, myList)