2014-08-30 183 views
-1

我在文件夾中有一些python模塊。動態加載python模塊

  1. 我想讀文件夾內容
  2. 動態導入每個導入模塊內的每個模塊
  3. 動態加載的名稱的方法「的run()」

如何做到這一點?

+1

這聽起來不是一個好主意。你想做什麼? – 2014-08-30 20:26:05

+0

@PatrickCollins如果我看到這個問題,我會這麼想。太複雜的解釋,但在我的問題的背景下,這是一個很好的解決方案。 – Boz 2014-08-30 20:49:50

回答

2

1)

import glob 
module_files = glob.glob("*.py") #return a list of all names in folder ending '.py' 

2)

modules = [__import__(module) for module in module_files] 

3)我沒有正確的理解這個問題,但我想,你應該使用gettattr:gettattr(module, 'attribute')相同module.attribute

__import__ docstring表示優先使用importlib.import_module()而不是它。

+0

這是否適用於當前文件夾內的文件夾中的包? – IanAuld 2014-08-30 21:42:54

+0

這就是我一直在尋找的。 – Boz 2014-08-30 21:48:30

+0

@IanAuld當然你可以使用'glob.glob(「folder_name/*。py」)'。要獲取文件夾列表,請使用'[如果os.path.isdir(name)]或'filter(os.path.isdir,glob.glob('*')),則使用'[glob.glob中名稱的名稱(「*」)) ' – 2014-08-31 07:27:18