首页 > 解决方案 > 动态导入 .py 模块

问题描述

main.py需要使用来自a.py, b.py, c.py... 等的函数,所有这些.py都有我调用的函数samefunctionname()

main.pyI want to do if, elif, elif, elif....,else声明并决定*.py我想要从import哪个samefunctionname().

应该是静态的main.py,但是很容易添加文件zz.py并能够从 main 调用它的函数。

我希望它可以理解:)

现在在伪代码中

lines=readfile()
for line in lines:
    //import line[0].py
    call line[0].samefunction
    //deimport line[0].py

标签: pythonpython-3.x

解决方案


您可以使用importlib.import_module从字符串中导入某些内容(Python 3.4 或更高版本):

import importlib

module = importlib.import_module("os")

print(repr(module))
# <module 'os' from '/usr/lib/python3.6/os.py'>

然后你可以调用你想要的函数:

module.chdir(".")  # same as os.chdir(".")

推荐阅读