2013-06-03 56 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 
.... 

我認爲那也無妨