您的位置:首页 > 技术中心 > 其他 >

python自动导入包如何实现

时间:2023-05-10 05:42

问题描述: 代码编写过程中,需要引入文件,但是引入的文件随着项目的变大会变多,所以编写了一个自动导入的方法,会根据文件名称的特点进行导入。

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 osimport auto_importdef 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__}校验完成!    ####")

以上就是python自动导入包如何实现的详细内容,更多请关注Gxl网其它相关文章!

热门排行

今日推荐

热门手游