Python 多场景获取项目根路径与目录操作详解
本文详解在 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 获取项目根路径及相关目录操作的方法,希望能为读者提供帮助。如有疑问,欢迎留言交流,小编会及时回复。感谢大家对本站的支持!若觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









