2013-06-03 58 views
0

我有几个模块我想要动态导入。这些模块名为prefix_?在哪里? = [0,1,2,3]。我使用glob来获取文件/模块的列表。使用glob来定位模块,然后动态导入模块

module = glob.glob(prefix_?.py) 
module.sort() 

现在我想一次导入一个模块并运行一些代码。

for m in range(0,len(module),1): 
    from module[m] import x, y, z 

但是我不能这样做,因为module是一个字符串列表。有什么方法可以将格式从字符串转换为我可以导入的实际模块?

回答

1

您可以使用importlib模块:

import glob 
import importlib 
module = glob.glob(prefix_?.py) 
module.sort() 
for m in module:  #iterate over list itself, why range? 
    mod = importlib.import_module(m[:-3]) #strip off .py   
+1

我只是要去编辑自己的帖子,把导入库在那里......但你MEH覆盖它:P +1 –

+0

感谢这工作。我无法将对象作为独立变量导入,只能将其前缀添加为mod。但这已经足够好了。我重复了范围,因为有超过100个文件和随机数。 –

1
my_module = __import__("some_file") #note you leave off the .py 
x = my_module.x 
y = my_module.y 
.... 

我认为那也无妨