您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

python自动导入包如何实现

2024/3/29 23:08:26发布7次查看
问题描述: 代码编写过程中,需要引入文件,但是引入的文件随着项目的变大会变多,所以编写了一个自动导入的方法,会根据文件名称的特点进行导入。
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自动导入包如何实现的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录