我有一个字符串,比如:abc.def.ghi.jkl.myfile.mymethod
。如何动态导入 mymethod
?
这是我的做法:
def get_method_from_file(full_path):
if len(full_path) == 1:
return map(__import__,[full_path[0]])[0]
return getattr(get_method_from_file(full_path[:-1]),full_path[-1])
if __name__=='__main__':
print get_method_from_file('abc.def.ghi.jkl.myfile.mymethod'.split('.'))
我想知道是否需要导入单个模块。
编辑:我使用的是 Python 版本 2.6.5。
最佳答案
从 Python 2.7 开始,您可以使用 importlib.import_module()功能。您可以使用以下代码导入模块并访问其中定义的对象:
from importlib import import_module
p, m = name.rsplit('.', 1)
mod = import_module(p)
met = getattr(mod, m)
met()
关于python - 从字符串动态导入文件中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790003/