Python 多场景获取项目根路径与目录操作详解

咖啡半糖
咖啡半糖
发布时间:2026-10-13 | 6人浏览过
原创

本文详解在 Python 运行、调试及打包成 exe 三种不同场景下获取项目根路径的方法,解决资源文件绝对路径定位问题。通过封装路径处理工具类,自动识别运行环境并返回对应根目录。同时扩展介绍了获取当前文件路径、上级目录及上上级目录的多种代码实现方式,适用于各类 Python 项目开发场景。

多场景获取项目根路径的需求

在实际开发中,常常需要在运行、调试以及将程序打包为 exe 文件这三种不同场景下获取项目的根路径,以解决获取资源文件绝对路径的问题。

路径处理工具类实现

为此,我们可以编写一个工具类来统一处理路径获取逻辑,具体代码如下所示:


import sys
import os
class pathutil(object):
  """路径处理工具类"""
  def __init__(self):
    # 判断调试模式
    debug_vars = dict((a, b) for a, b in os.environ.items()
             if a.find('IPYTHONENABLE') >= 0)
    # 根据不同场景获取根目录
    if len(debug_vars) > 0:
      """当前为debug运行时"""
      self.rootPath = sys.path[2]
    elif getattr(sys, 'frozen', False):
      """当前为exe运行时"""
      self.rootPath = os.getcwd()
    else:
      """正常执行"""
      self.rootPath = sys.path[1]
    # 替换斜杠
    self.rootPath = self.rootPath.replace("\\", "/")
  def getPathFromResources(self, fileName):
    """按照文件名拼接资源文件路径"""
    filePath = "%s/resources/%s" % (self.rootPath, fileName)
    return filePath
PathUtil = pathutil()
if __name__ == '__main__':
  """测试"""
  # path = PathUtil.getPathFromResources("context.ini")
  print(PathUtil.rootPath)

Python 目录操作扩展知识

除了获取根路径,了解如何获取当前目录和上级目录也是 Python 开发中的常见需求,以下对相关知识点进行扩展说明。

要获取当前文件所在的路径,可以使用以下代码实现:


import os

print '***获取当前目录***'
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))
# __file__ 为当前文件, 若果在ide中运行此行会报错,可改为 #d = path.dirname('.') 
# 但是改为.后,就是获得当前目录,接着使用dirname函数访问上级目录
print '***获取上级目录***'
print os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
print os.path.abspath(os.path.dirname(os.getcwd()))
print os.path.abspath(os.path.join(os.getcwd(), ".."))
print '***获取上上级目录***'
print os.path.abspath(os.path.join(os.getcwd(), "../.."))

总结

综上所述,通过判断运行环境并封装工具类,可以稳定地获取项目根路径。

以上介绍了 Python 获取项目根路径及相关目录操作的方法,希望能为读者提供帮助。如有疑问,欢迎留言交流,小编会及时回复。感谢大家对本站的支持!若觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表