python自动导入包如何实现

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

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自动导入包如何实现的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2237094.html

(0)
上一篇 2025年2月26日 18:49:41
下一篇 2025年2月26日 18:49:57

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论