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.txt2、检查文件是否真的存在
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().parentfile_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 Pathimport os
print("当前工作目录:", os.getcwd())print("脚本文件路径:", Path(__file__).resolve())
BASE_DIR = Path(__file__).resolve().parentfile_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作为路径基准。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!













