如何基于项目根目录获取文件的相对路径?
获取Python文件相对于项目根目录的路径
给你两种实用的实现方式,直接套用就能解决问题:
方法1:用os.path模块(兼容Python2和3)
先拿到文件的完整路径,再指定项目根目录的绝对路径,最后用os.path.relpath计算相对路径:
import os import my_file # 获取文件完整路径 full_file_path = my_file.__file__ # 项目根目录的绝对路径 project_root = "/Users/UserName/project" # 计算相对路径 relative_path = os.path.relpath(full_file_path, project_root) print(relative_path) # 输出结果就是你要的first_level/second/somename/my_file.py
方法2:用pathlib模块(Python3.4+推荐,代码更简洁)
pathlib是Python3.4之后推出的面向对象路径工具,写法更直观:
from pathlib import Path import my_file # 把路径转为Path对象 full_path = Path(my_file.__file__) # 项目根目录的Path对象 project_root = Path("/Users/UserName/project") # 直接计算相对路径 relative_path = full_path.relative_to(project_root) print(relative_path) # 同样输出目标路径
额外技巧:避免硬编码项目根目录
如果不想把项目根目录的路径写死,可以通过遍历路径自动找到project目录:
from pathlib import Path import my_file full_path = Path(my_file.__file__) # 向上遍历直到找到名为project的文件夹 current_dir = full_path while current_dir.name != "project": current_dir = current_dir.parent project_root = current_dir # 再计算相对路径 relative_path = full_path.relative_to(project_root) print(relative_path)
内容的提问来源于stack exchange,提问作者myfishnameisqwerty
相关产品推荐
相关产品推荐

