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

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

本文详解在 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。