为什么python运行的时候相对路径在C:\Users\admin
一、路径问题根源
Python中原生相对路径的基准是「运行时工作目录」(默认常为C:\Users\你的用户名),而非脚本实际存放目录,这是导致桌面脚本调用相对路径却指向用户目录的核心原因。
二、路径使用原则(避坑+通用)
| 路径方式 | 特点&使用建议 |
|---|---|
| 硬编码绝对路径 | 如C:\Users\18086\桌面\test.txt,仅临时测试用,移植性极差(换电脑/目录必失效),不推荐日常使用; |
| 原生相对路径(无处理) | 如open("test.txt"),简洁但依赖工作目录,易出错,仅适合「固定在项目根目录运行脚本」的场景; |
| 动态拼接绝对路径(推荐) | 先通过os.path.dirname(os.path.abspath(__file__))获取脚本目录,再用os.path.join()拼接目标文件(如os.path.join(脚本目录, "test.txt"))。 ✅ 兼顾「相对路径的灵活性」和「绝对路径的稳定性」,移植性强,是绝大多数场景(工具、项目、复用脚本)的最优解。 |
三、最简解决代码(直接复用)
import os
# 1. 获取脚本所在目录(动态适配,不受运行目录影响)
script_dir = os.path.dirname(os.path.abspath(__file__))
# 2. 拼接目标文件路径(只需写相对于脚本的路径)
target_path = os.path.join(script_dir, "你要访问的文件.txt")
# 3. 正常操作文件
with open(target_path, "r", encoding="utf-8") as f:
content = f.read()
四、关键结论
- 不要依赖「原生相对路径」的默认行为,也不要硬编码绝对路径;
- 核心思路是「以脚本自身目录为基准,动态生成绝对路径」,既解决工作目录不符的问题,又保证代码在不同环境下能正常运行。
收录于知乎专栏「计算机基础」· 查看知乎原文