python自動導(dǎo)入包的實現(xiàn)
問題描述: 代碼編寫過程中,需要引入文件,但是引入的文件隨著項目的變大會變多,所以編寫了一個自動導(dǎo)入的方法,會根據(jù)文件名稱的特點進(jìn)行導(dǎo)入。
def auto_import(packagePath: str, fileTag: str, interceptLength: int, level=1):
"""
自動導(dǎo)入函數(shù),導(dǎo)入具有某個標(biāo)識的文件
:param packagePath: 當(dāng)前包路徑
:param level: 軟件包層級
:param fileTag:文件名稱標(biāo)識
:param interceptLength:導(dǎo)入屬性截取名稱
:return:
"""
# 定義導(dǎo)入屬性列表和包
att_list = []
# 獲取對應(yīng)的包層級
rank = level
package = ''
for i in range(level):
# 獲取父級包名稱拼接包名稱
package += packagePath.split('\\')[-rank] + '.'
rank -= 1
# 遍歷當(dāng)前包下的所有文件
for fileName in os.listdir(packagePath):
# 篩選出nameTag的文件進(jìn)行導(dǎo)入
if fileTag in fileName:
print(f'導(dǎo)入包名稱:{package}' + fileName[:-3])
# 動態(tài)導(dǎo)入包,并獲取包內(nèi)的具體模塊、屬性
att_list.append(
# 導(dǎo)入包中的某個屬性
importlib.import_module(
# 拼接模塊路徑
f'{package}' + fileName[:-3]
# 獲取模塊中的對應(yīng)屬性
).__dict__[fileName[:-interceptLength]])
# 返回屬性列表
return att_list
假如我們創(chuàng)建了多個TableModel文件,需要校驗對應(yīng)的文件是否在數(shù)據(jù)庫中存在,那么我們就可以這么用:
import os
import auto_import
def auto_check_model():
? ? """
? ? 導(dǎo)入tableModel中的所有文件,驗證數(shù)據(jù)庫中表是否存在
? ? :return: 返回驗證結(jié)果
? ? """
? ? # 獲取當(dāng)前文件夾路徑
? ? packagePath = os.path.dirname(os.path.realpath(__file__))
? ? # 獲取所有model文件
? ? model_list = auto_import(packagePath=packagePath, fileTag='Model', ?interceptLength=8, level=2)
? ? # 建立數(shù)據(jù)庫連接
? ? connect = DatabaseOperation().connect()
? ? # 檢查model在數(shù)據(jù)庫中是否存在,不存在則創(chuàng)建
? ? for i in range(len(model_list)):
? ? ? ? model_list[i].metadata.create_all(connect)
? ? ? ? print(f"#### ? ? {model_list[i].__name__}校驗完成! ? ?####")到此這篇關(guān)于python自動導(dǎo)入包的實現(xiàn)的文章就介紹到這了,更多相關(guān)python自動導(dǎo)入包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python接口自動化使用requests庫發(fā)送http請求
這篇文章主要介紹了python接口自動化使用requests庫發(fā)送http請求,HTTP協(xié)議?,一個基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù),包括html文件、圖像、結(jié)果等,即是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)2022-08-08
Python模擬鼠標(biāo)點擊實現(xiàn)方法(將通過實例自動化模擬在360瀏覽器中自動搜索python)
這篇文章主要介紹了Python模擬鼠標(biāo)點擊實現(xiàn)方法(將通過實例自動化模擬在360瀏覽器中自動搜索python),需要的朋友可以參考下2017-08-08
Python實現(xiàn)Tracert追蹤TTL值的方法詳解
Tracert命令跟蹤路由原理是IP路由每經(jīng)過一個路由節(jié)點TTL值會減一。本文我們將通過scapy構(gòu)造一個路由追蹤工具并實現(xiàn)一次追蹤,感興趣的小伙伴可以了解一下2022-10-10
Python設(shè)置在shell腳本中自動補(bǔ)全功能的方法
今天小編就為大家分享一篇Python設(shè)置在shell腳本中自動補(bǔ)全功能的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python中JSON轉(zhuǎn)換的全面指南與最佳實踐
JSON是現(xiàn)代應(yīng)用程序中最流行的數(shù)據(jù)交換格式之一,Python通過內(nèi)置的json模塊提供了強(qiáng)大的JSON處理能力,本文將深入探討Python中的JSON轉(zhuǎn)換,包括基本用法、高級特性以及最佳實踐,需要的朋友可以參考下2025-03-03
使用jupyter notebook運(yùn)行python和R的步驟
這篇文章主要介紹了使用jupyter notebook運(yùn)行python和R的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

