zoukankan      html  css  js  c++  java
  • importlib 模块

    1. 动态导入模块

    支持字符串导入模块

    foo.py

    class Func:
        def __init__(self):
            self.test()
    
        def test(self):
            print(__name__)
    

    test.py

    import importlib
    
    
    def dynamic_import(module):
        return importlib.import_module(module)
    
    
    if __name__ == '__main__':
        result = dynamic_import('foo')		# 以字符串形式导入 foo.py
        print(result)
        result.Func()		# 调用 foo.py 中的 Func() 类
    

    运行结果如下:

    <module 'foo' from 'E:\Python_virtualenvs\for_django\Projects\算法\importlib 模块\foo.py'>
    foo
    

    2. 模块导入检查

    导入模块之前检查模块是否存在

    import importlib
    import importlib.util
    
    def check_module(module_name):
        module_spec = importlib.util.find_spec(module_name)
        if module_spec:
            print('模块 %s 导入成功' % module_name)
            return module_spec
        else:
            print('导入不存在模块 %s ' % module_name)
            return None
    
    
    if __name__ == '__main__':
        module_spec = check_module('fake_module')
        module_spec = check_module('foo')
        print(module_spec)
        if module_spec:
            module = importlib.util.module_from_spec(module_spec)
            print(module)
    

    运行结果:

    导入不存在模块 fake_module 
    模块 foo 导入成功
    ModuleSpec(name='foo', loader=<_frozen_importlib_external.SourceFileLoader object at 0x000001DBEF9BC198>, origin='E:\Python_virtualenvs\for_django\Projects\算法\importlib 模块\foo.py')
    <module 'foo' from 'E:\Python_virtualenvs\for_django\Projects\算法\importlib 模块\foo.py'>
    
  • 相关阅读:
    openpyxl模块介绍 ——读取excel表格
    openpyxl模块介绍 ——创建excel表格 ——并写入数据
    csv文件——读和遍历csv文件
    openpyxl模块介绍 ——原有excel表格中创建sheet ——并写入数据
    遍历目录
    c# 反转,新手看
    缩写
    对象、类和结构
    c# Outlook 收发邮件
    C#中接口的作用
  • 原文地址:https://www.cnblogs.com/midworld/p/10952684.html
Copyright © 2011-2022 走看看