1.当文件在同一目录层级时,可以直接使用import方法导入文件
2.当文件在不通目录层级时
利用os模块和importlib方法
import os
import importlib.util
root_path = os.path.realpath(os.path.dirname(os.path.dirname(__file__))) # 项目的根目录
project_path = os.path.join(root_path, 'untitled1') # 项目所在目录
temp_path = os.path.join(project_path, 'temp') # 目标文件上级目录
file_a_path = os.path.join(temp_path, 'file_a.py') # 目标文件目录
def get_func(path, func_name):
if not os.path.isfile(path):
raise IOError
# 根据提供的目标文件路径,返回模块的说明 spec_from_file_location(module_name, file_path)
module_desc = importlib.util.spec_from_file_location("_", path)
# 根据传入的模块说明返回引入的模块 module_from_spec(模块说明)
moudle_spec = importlib.util.module_from_spec(module_desc)
# exec_module执行加载方法
module_desc.loader.exec_module(moudle_spec)
if hasattr(moudle_spec, func_name):
return getattr(moudle_spec, func_name)
func = get_func(file_a_path, "print_func")
# 用()执行方法
func()