Python 路径问题排查

618 字
3 分钟
Python 路径问题排查

Python 路径问题排查#

在使用 Python 写脚本时,经常会遇到这种问题:文件明明存在,但是程序一直提示找不到。很多时候不是文件真的不存在,而是当前运行目录和我们想的不一样。

今天记录一下 Python 路径问题的排查方法。

1、先看当前工作目录#

Python 读取相对路径时,是从“当前工作目录”开始找,不一定是从 .py 文件所在目录开始找。

可以先打印:

import os
print(os.getcwd())

如果输出目录不是你以为的项目目录,那么相对路径就容易错。

例如:

open("data/test.txt", "r", encoding="utf-8")

这行代码实际寻找的是:

当前工作目录/data/test.txt

2、检查文件是否真的存在#

from pathlib import Path
p = Path("data/test.txt")
print(p.exists())
print(p.resolve())

exists() 可以判断文件是否存在,resolve() 可以打印绝对路径。这样就能看清楚 Python 到底在找哪个文件。

3、使用脚本所在目录作为基准#

如果希望无论从哪里运行脚本,都能找到同目录下的文件,可以这样写:

from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent
file_path = BASE_DIR / "data" / "test.txt"
print(file_path)
print(file_path.exists())
content = file_path.read_text(encoding="utf-8")
print(content)

这样路径就和脚本文件位置绑定,不受命令行当前目录影响。

4、不要手动拼接斜杠#

不推荐这样写:

path = "data" + "/" + "test.txt"

更推荐:

from pathlib import Path
path = Path("data") / "test.txt"

pathlib 会自动处理不同系统下的路径分隔符。

5、Windows 路径注意反斜杠#

Windows 路径中经常有反斜杠:

path = "C:\new\test.txt"

这里 \n 会被当成换行,所以可能出错。可以写成原始字符串:

path = r"C:\new\test.txt"

或者使用双反斜杠:

path = "C:\\new\\test.txt"

更推荐使用 Path:

from pathlib import Path
path = Path("C:/new/test.txt")

6、一个完整排查模板#

from pathlib import Path
import os
print("当前工作目录:", os.getcwd())
print("脚本文件路径:", Path(__file__).resolve())
BASE_DIR = Path(__file__).resolve().parent
file_path = BASE_DIR / "data" / "test.txt"
print("目标文件路径:", file_path)
print("文件是否存在:", file_path.exists())
if file_path.exists():
print(file_path.read_text(encoding="utf-8"))
else:
print("文件不存在,请检查 data 文件夹是否和脚本在同一级目录")

以后遇到文件找不到,可以先把这段代码复制进去看一下。

总结#

Python 路径问题的核心就是一句话:

相对路径相对的是当前工作目录,不一定是脚本所在目录。

如果想写稳定一点的脚本,就尽量用:

Path(__file__).resolve().parent

作为路径基准。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Python 路径问题排查
https://blog.tjcheng.cn/posts/daily/2026-06-29/python-path-troubleshooting/
作者
TengJinCheng
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录