绝对路径与相对路径的定义及适用场合

定义

绝对路径

绝对路径是从文件系统根目录开始的完整路径,无论当前位置在哪里,都能准确定位到目标文件或目录。

Windows 系统示例:
D:\Project_File\YOLO_Project\YOLO8\recognition\test.py
C:\Users\username\Documents\file.txt
Linux/macOS 系统示例:
/home/user/projects/yolo/test.py
/usr/local/bin/python

相对路径

相对路径是相对于当前工作目录(CWD)的路径,不是从根目录开始,而是描述如何从"当前位置"到达目标位置。

示例:
./datasets/images.jpg  # 当前目录下的datasets文件夹中的images.jpg
../data/config.yaml    # 上一级目录的data文件夹中的config.yaml
images/cat.jpg         # 当前目录下的images文件夹中的cat.jpg

适用场合

绝对路径适用场合

环境依赖程序:当程序需要在固定位置找资源时

config_file = "C:/ProgramData/App/config.ini"

系统级应用:操作系统服务、启动脚本等

log_file = "/var/log/app.log"

跨应用调用:从一个应用调用另一个应用时

subprocess.run(["D:/Program Files/App/executable.exe"])

配置文件中:确保无论从何处启动应用都能找到资源

相对路径适用场合

项目内部引用:使项目更易于移植

with open("data/input.txt", "r") as f:
    content = f.read()

网站开发:网页中引用资源

<img src="../images/logo.png">

可移植应用:需要在不同环境间迁移的应用

config = load_config("./config.yml")

版本控制项目:便于多人协作开发

在Python中的特殊考虑

当前工作目录的问题

Python中,相对路径是基于"当前工作目录"(CWD),而不是基于脚本所在位置

"""如果在D:\Project_File运行test脚本:"""
python YOLO_Project\YOLO8\recognition\test.py
# 相对路径"./data.txt"指的是D:\Project_File\data.txt

"""如果在脚本目录下执行"""
cd D:\Project_File\YOLO_Project\YOLO8\recognition
python test.py
# 相对路径"./data.txt"指的是:\Project_File\YOLO_Project\YOLO8\recognition\data.txt

解决方案:使用脚本的相对路径(仍然是绝对路径),以下是一个例子:

"""目的:引用yolo的Model文件
首先,获取正在运行的脚本所在目录的绝对路径"""
script_dir = os.path.dirname(os.path.abspath(__file__))
"""其次,确认Model路径是否存在,如果存在则无反应,不存在就按照路径创建一个文件夹,如果省略这一步可能导致结果丢失:"""
os.makedirs(os.path.join(script_dir, "results"), exist_ok=True)
"""然后,定义Model的路径"""
model_path = os.path.join(script_dir, "weights", "yolov8x.pt")#相对于脚本的路径设置Model存放路径即"script_dir/weights/yolov8x.pt"
"""最后,进行Model的调用:"""
model = YOLO(model_path)

"""最后最后,不要忘记导入os库"""

这确保了无论从哪里执行脚本,都能正确找到相对于脚本的文件路径。

总结
绝对路径:稳定、准确,但不易移植
相对路径:易于移植,但依赖上下文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superior tigre

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值