


Bagaimana untuk melaksanakan import automatik pakej dalam Python
May 09, 2023 pm 03:25 PM问题描述: 代码编写过程中,需要引入文件,但是引入的文件随着项目的变大会变多,所以编写了一个自动导入的方法,会根据文件名称的特点进行导入。
def auto_import(packagePath: str, fileTag: str, interceptLength: int, level=1): """ 自动导入函数,导入具有某个标识的文件 :param packagePath: 当前包路径 :param level: 软件包层级 :param fileTag:文件名称标识 :param interceptLength:导入属性截取名称 :return: """ # 定义导入属性列表和包 att_list = [] # 获取对应的包层级 rank = level package = '' for i in range(level): # 获取父级包名称拼接包名称 package += packagePath.split('\\')[-rank] + '.' rank -= 1 # 遍历当前包下的所有文件 for fileName in os.listdir(packagePath): # 筛选出nameTag的文件进行导入 if fileTag in fileName: print(f'导入包名称:{package}' + fileName[:-3]) # 动态导入包,并获取包内的具体模块、属性 att_list.append( # 导入包中的某个属性 importlib.import_module( # 拼接模块路径 f'{package}' + fileName[:-3] # 获取模块中的对应属性 ).__dict__[fileName[:-interceptLength]]) # 返回属性列表 return att_list
假如我们创建了多个TableModel文件,需要校验对应的文件是否在数据库中存在,那么我们就可以这么用:
import os import auto_import def auto_check_model(): """ 导入tableModel中的所有文件,验证数据库中表是否存在 :return: 返回验证结果 """ # 获取当前文件夹路径 packagePath = os.path.dirname(os.path.realpath(__file__)) # 获取所有model文件 model_list = auto_import(packagePath=packagePath, fileTag='Model', interceptLength=8, level=2) # 建立数据库连接 connect = DatabaseOperation().connect() # 检查model在数据库中是否存在,不存在则创建 for i in range(len(model_list)): model_list[i].metadata.create_all(connect) print(f"#### {model_list[i].__name__}校验完成! ####")
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan import automatik pakej dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah kelebihan dan kekurangan templat?

Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun

Dengan hanya $250, pengarah teknikal Hugging Face mengajar anda cara memperhalusi Llama 3

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET

Panduan lengkap untuk penyahpepijatan dan analisis fungsi golang

Bagaimana anda bertanya kepadanya Deepseek

Bagaimana untuk menyimpan fungsi menilai
