我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

python自动导入包怎么实现

这篇文章主要介绍“python自动导入包怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python自动导入包怎么实现”文章能帮助大家解决问题。

从事服务器托管,服务器租用,云主机,网页空间,域名与空间,CDN,网络代维等服务。

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

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

关于“python自动导入包怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


本文题目:python自动导入包怎么实现
地址分享:http://mswzjz.cn/article/jccseg.html

其他资讯