Python importlib动态导入模块实现代码

 更新时间:2020年04月16日 09:39:08   作者:starnight_cyber  
这篇文章主要介绍了Python importlib动态导入模块实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

阅读目录

  一般而言,当我们需要某些功能的模块时(无论是内置模块或自定义功能的模块),可以通过import module 或者 from * import module的方式导入,这属于静态导入,很容易理解。

  而如果当我们需要在程序的运行过程时才能决定导入某个文件中的模块时,并且这些文件提供了同样的接口名字,上面说的方式就不适用了,这时候需要使用python 的动态导入。

importlib使用

  如在scripts目录中保存着一些功能模块,向外提供类似的接口poc()和脚本描述信息description,需要传入一个参数target,当然脚本执行的功能是不一样的,以下只是举例:

starnight:EXP-M starnight$ ls scripts/
__init__.py   __pycache__   test1.py    test2.py    test3.py
starnight:EXP-M starnight$ cat scripts/test1.py 
#!/usr/bin/env python
# -*- coding:utf-8 -*-
description = 'it is a test1'
def poc(target):
  print('it is a test1')

  return True

  而我们需要动态传入脚本名,来选用此时要执行的功能:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import importlib

script_name = input('please input script_name : ')     # 手动输入脚本名               
module = importlib.import_module('scripts.{}'.format(script_name))    # 动态导入相应模块
func = module.poc('')      # 执行脚本功能
print(module.description)    # 获取脚本描述信息
please input script_name : test1
it is a test1
it is a test1

...

please input script_name : test3
it is a test3
it is a test3

  当我们动态给定脚本名字时,就会动态的导入该模块,执行相应的功能。

importlib其他介绍
  python doc: importlib

  importlib中的几个函数:__import__、import_module、find_loader、invalidate_caches、reload

"Note Programmatic importing of modules should use import_module() instead of this function."
  当进行编程时,使用import_module,如上使用该模块。

  find_loader用来查找模块,reload重新载入模块,invalidate_caches不多介绍了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于python读取.mat文件并取出信息

    基于python读取.mat文件并取出信息

    这篇文章主要介绍了基于python读取.mat文件并取出信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python中方法链的使用方法

    Python中方法链的使用方法

    这篇文章主要为大家详细介绍了Python中方法链的使用方法,方法链(method chaining)是面向对象的编程语言中的一种常见语法,对方法链感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 对numpy.append()里的axis的用法详解

    对numpy.append()里的axis的用法详解

    今天小编就为大家分享一篇对numpy.append()里的axis的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python使用PyAutoGUI实现桌面自动化功能

    Python使用PyAutoGUI实现桌面自动化功能

    PyAutoGUI 是一个跨平台的桌面自动化工具,能够模拟鼠标点击、键盘输入、屏幕截图与图像识别,适用于重复性桌面任务,本集通过代码+截图+输出日志的实战形式,带你掌握从基础操作到复杂任务的全流程自动化,需要的朋友可以参考下
    2025-07-07
  • pycharm快捷键自动提示documentation问题(auto Ctrl+Q)

    pycharm快捷键自动提示documentation问题(auto Ctrl+Q)

    这篇文章主要介绍了pycharm快捷键自动提示documentation问题(auto Ctrl+Q),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • flask 实现上传图片并缩放作为头像的例子

    flask 实现上传图片并缩放作为头像的例子

    今天小编就为大家分享一篇flask 实现上传图片并缩放作为头像的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解

    今天小编就为大家分享一篇对python产生随机的二维数组实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python str与repr的区别

    python str与repr的区别

    repr() 输出对 Python比较友好,而str()的输出对用户比较友好。虽然如此,很多情况下这三者的输出仍然都是完全一样的
    2013-03-03
  • 探索Python元类的魅力:灵活定制类的创建过程

    探索Python元类的魅力:灵活定制类的创建过程

    在Python编程中,元类(Metaclass)是一项高级特性,它允许我们在定义类的时候动态地控制类的创建过程。元类提供了一种强大的机制,可以对类进行定制化,扩展其功能,并在类的实例化过程中执行额外的操作,本文将深入解析
    2023-10-10
  • 利用python中的matplotlib打印混淆矩阵实例

    利用python中的matplotlib打印混淆矩阵实例

    这篇文章主要介绍了利用python中的matplotlib打印混淆矩阵实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论