# 背景
自動化測試框架中model層下有很多類,用來操作mysql的,使用的時候需要把全部的類加載進來,需要使用到動態加載類
# 解決方法
使用pkgutil,內置的方法,常用的話有兩個方法
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 *的操作