python- 動態加載目錄下全部的類

# 背景

自動化測試框架中model層下有不少類,用來操做mysql的,使用的時候須要把所有的類加載進來,須要使用到動態加載類mysql

 

# 解決方法

使用pkgutil,內置的方法,經常使用的話有兩個方法sql

iter_modules(path=None, prefix='')
Yields (module_loader, name, ispkg) for all submodules on path, or, if path is None, all top-level modules on sys.path.
path是包的目錄路徑,prefix是輸出時,全部包的名字的前綴。用來獲取該path下的子模塊或子包。框架

walk_packages(path=None, prefix='', onerror=None)
Yields (module_loader, name, ispkg) for all modules recursively on path, or, if path is None, all accessible modules.
同上,可是這個方法是遞歸獲取路徑下的全部模塊。測試


具體使用以下:
# 動態加載modelsql中全部類
for importer_sql, modname, ispkg_sql in pkgutil.walk_packages(path=modelsql.__path__,
                                                      prefix=modelsql.__name__+'.',
                                                      onerror=lambda x: None):
    exec('from ' + modname + ' import *')

至關於對目錄下全部的類執行了import *的操做spa

相關文章
相關標籤/搜索