使用 for 循环和名称列表导入 python 中的文件
Import files in python with a for loop and a list of names
我正在尝试导入许多文件。我有一个字符串列表 (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
如果您想要与 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>
Example/Demo -
>>> import importlib
>>> globals()['b'] = importlib.import_module('b')
>>> b.myfun()
Hello
myList = ['fileOne', 'fileTwo', 'fileThree']
modules = map(__import__, myList)
我正在尝试导入许多文件。我有一个字符串列表 (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
如果您想要与 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>
Example/Demo -
>>> import importlib
>>> globals()['b'] = importlib.import_module('b')
>>> b.myfun()
Hello
myList = ['fileOne', 'fileTwo', 'fileThree']
modules = map(__import__, myList)