python- 動態加載目錄下所有的類


# 背景

自動化測試框架中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 *的操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM