zoukankan      html  css  js  c++  java
  • python- 动态加载目录下所有的类

    # 背景

    自动化测试框架中model层下有很多类,用来操作mysql的,使用的时候需要把全部的类加载进来,需要使用到动态加载类

    # 解决方法

    使用pkgutil,内置的方法,常用的话有两个方法

    iter_modules(path=None, prefix='')
    Yields (module_loader, name, ispkg) for all submodules on path, or, if path is None, all top-level modules on sys.path.
    path是包的目录路径,prefix是输出时,所有包的名字的前缀。用来获取该path下的子模块或子包。

    walk_packages(path=None, prefix='', onerror=None)
    Yields (module_loader, name, ispkg) for all modules recursively on path, or, if path is None, all accessible modules.
    同上,但是这个方法是递归获取路径下的所有模块。


    具体使用如下:
    # 动态加载modelsql中所有类
    for importer_sql, modname, ispkg_sql in pkgutil.walk_packages(path=modelsql.__path__,
                                                          prefix=modelsql.__name__+'.',
                                                          onerror=lambda x: None):
        exec('from ' + modname + ' import *')

    相当于对目录下所有的类执行了import *的操作

  • 相关阅读:
    图表插件echars的使用案例
    安装Eclipse
    ef 更新数据库
    webapi Route 特性
    WebSite下创建webapi
    C# 泛型约束
    Session共享
    ubuntu eclipse 无法打开
    C# TreeView 连续点击 不触发AfterCheck事件
    ef 仓储模式 Redis
  • 原文地址:https://www.cnblogs.com/jwentest/p/10690515.html
Copyright © 2011-2022 走看看