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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python爬取国外天气预报网站的方法
Jul 10 Python
python函数局部变量用法实例分析
Aug 04 Python
Python编程实现蚁群算法详解
Nov 13 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
Python实现二维曲线拟合的方法
Dec 29 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
Python函数生成器原理及使用详解
Mar 12 Python
Python函数调用追踪实现代码
Nov 27 Python
python实现KNN近邻算法
Dec 30 Python
python 自动识别并连接串口的实现
Jan 19 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/04/28 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
javascript实现连续赋值
2015/08/10 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
财务管理专业毕业生求职信
2014/06/02 职场文书
三严三实对照检查材料
2014/09/22 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
会计求职简历自我评价
2015/03/10 职场文书
考研导师推荐信范文
2015/03/27 职场文书
入团介绍人意见范文
2015/06/04 职场文书