使用字符串导入Python文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用字符串导入Python文件相关的知识,希望对你有一定的参考价值。

我试图从不同目录下的另一个python文件中导入一个函数,但只有字符串形式的函数名。我试过使用如下导入lib。

sys.path.insert(1, file_path) # Works fine
import file # Works fine
run_function = importlib.import_module("file.function"+str(loop)) # Error occurs here

但当我尝试这样做时,我得到了错误信息。ModuleNotFoundError: No module named 'file.function1'; 'file' is not a package

我也试过这样做:

from file import *
eval("functionloop()")

但是用这种方法我收到了错误信息。SyntaxError: import * only allowed at module level

我不知道到底该如何解决这个问题,或者是否有更好的方法。我愿意听取你的建议。谢谢!我正试图从一个函数中导入一个函数。

答案

你没有导入函数。你已经成功地导入了模块,其中包含了函数,所以你要做的就是得到它。

sys.path.insert(1, file_path) # Works fine
import file # Works fine
result = getattr(file, "function1")(loop)
另一答案

你可以在文件中的任何地方导入(显然在函数中导入会将模块范围限制在函数本身)。

def func(x):
    for i in range(x):
        eval(f"from lib import functioni")

    # All functions available in this scope

为了额外的安全,我建议把它放在trycatch中。

以上是关于使用字符串导入Python文件的主要内容,如果未能解决你的问题,请参考以下文章

Python导入文本文件并将字符串转换为浮点数

导入EPF文件无法完成,因为错误的字符串值错误

Python TypeError:导入文本文件时需要字符串或其他字符缓冲区对象

python settings 中通过字符串导入模块

python中动态导入文件的方法

Python比较文件差异,difflib类库的使用