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

作者:starnight_cyber 时间:2022-07-31 05:52:25 

阅读目录

一般而言,当我们需要某些功能的模块时(无论是内置模块或自定义功能的模块),可以通过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不多介绍了。

来源:https://www.cnblogs.com/Hi-blog/p/8529297.html

标签:Python,importlib,模块
0
投稿

猜你喜欢

  • XML教程—编写结构完整的XML文档

    2008-10-11 13:43:00
  • SQL Server命令行导数据的2种方式

    2010-07-26 14:48:00
  • golang grpc配置使用实战

    2024-02-06 01:17:09
  • Django使用HTTP协议向服务器传参方式小结

    2023-03-08 11:31:20
  • win10下mysql 5.7.23 winx64安装配置方法图文教程

    2024-01-18 07:28:06
  • Python使用面向对象方式创建线程实现12306售票系统

    2021-01-22 09:13:36
  • webstorm中配置nodejs环境及npm的实例

    2024-05-11 10:16:09
  • DBeaver一款替代Navicat的数据库可视化工具

    2024-01-18 07:55:44
  • 如何计算ASP页面的加载时间/载入时间?

    2009-11-25 20:10:00
  • Python进行数据提取的方法总结

    2022-06-23 18:02:45
  • python3 pillow生成简单验证码图片的示例

    2022-08-16 23:17:05
  • 解决Pycharm中恢复被exclude的项目问题(pycharm source root)

    2023-10-30 11:10:44
  • python3使用urllib示例取googletranslate(谷歌翻译)

    2021-08-31 19:20:34
  • Python Selenium自动化获取页面信息的方法

    2023-08-22 18:29:31
  • HTML5硝烟弥漫

    2009-07-06 14:44:00
  • python3 实现函数写文件路径的正确方法

    2023-12-09 11:38:51
  • SQL Server数据库服务器高性能设置

    2010-11-25 16:00:00
  • 使用Python的Supervisor进行进程监控以及自动启动

    2022-11-19 16:55:35
  • python实现自动登录

    2023-10-20 05:11:46
  • numpy np.newaxis 的实用分享

    2023-01-21 06:06:25
  • asp之家 网络编程 m.aspxhome.com