使用字符串导入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文件的主要内容,如果未能解决你的问题,请参考以下文章