python实现跨文件调用函数方法

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()

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值