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


Posted in Python onApril 16, 2020

阅读目录

一般而言,当我们需要某些功能的模块时(无论是内置模块或自定义功能的模块),可以通过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 相关文章推荐
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
python3下载抖音视频的完整代码
Jun 05 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
python os.rename实例用法详解
Dec 06 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
opencv实现图像平移效果
Mar 24 Python
Python re.sub 反向引用的实现
Jul 07 Python
pandas数据拼接的实现示例
Apr 16 #Python
python 生成任意形状的凸包图代码
Apr 16 #Python
Python telnet登陆功能实现代码
Apr 16 #Python
基于python 凸包问题的解决
Apr 16 #Python
python实现交并比IOU教程
Apr 16 #Python
python 弧度与角度互转实例
Apr 15 #Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 #Python
You might like
php对大文件进行读取操作的实现代码
2013/01/23 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
在父页面调用子页面的JS方法
2013/09/29 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
javascript回到顶部特效
2016/07/30 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
jQuery事件详解
2017/02/23 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
python3.0 字典key排序
2008/12/24 Python
python 正则式 概述及常用字符
2009/05/07 Python
Python计算字符宽度的方法
2016/06/14 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
大学生冰淇淋店商业计划书
2014/01/14 职场文书
学生会主席事迹材料
2014/01/28 职场文书
政协调研汇报材料
2014/08/15 职场文书
2015年采购工作总结
2015/04/10 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL