若本文对您有帮助,欢迎点赞支持;若还有疑问或建议,欢迎留言交流~
问题现象
Python文件读取操作时,系统无法找到指定路径的文件或目录。其核心原因可归结为以下三点:
- 路径拼写错误(如大小写不一致、特殊字符未转义)
- 工作目录与相对路径不匹配(常见于IDE或脚本调用场景)
- 文件实际不存在(包括扩展名错误或文件被移动)
其中,第二种为最常见的原因。主要为项目中调用.py文件中存在相对路径,而在Pycharm中运行与终端中运行可能结果不同,一个报错一个不报错。
快速解决方案
1. 使用绝对路径
直接指定文件的完整路径(适用于固定环境):
with open("/home/user/project/data/file.txt") as f: # Linux示例pass
注意Windows路径需处理反斜杠转义(如r"C:\Users\file.txt"
或双反斜杠)。
2. 动态获取脚本所在目录 (推荐)
通过__file__
属性定位脚本的真实路径,避免工作目录干扰:
import os
# 当前文件的父目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 当前文件的父目录的父目录(我的此处为项目目录)
project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 根据自己的需求选择
file_path = os.path.join(script_dir, "data/file.txt")
# 或者
file_path = os.path.join(project_dir, "data/file.txt")
此方法在多级目录项目中尤为可靠。
其他原因排查
1. 验证文件路径与名称
- 检查路径字符串的拼写(包括英文冒号、斜杠方向等),例如
data\file.txt
在Linux中需改为data/file.txt
1 - 确认文件扩展名是否匹配(如
.txt
与.csv
的区别) - 使用
os.path.exists()
函数验证路径是否存在:
import os
print(os.path.exists("your_file_path")) # 返回True则路径有效
2. 理解工作目录与相对路径
- 执行脚本时,系统以当前工作目录为相对路径起点,而非脚本所在目录3
- 通过
os.getcwd()
获取当前工作目录,若与预期不符:
-
- 在IDE(如VSCode)中设置工作目录(调试配置项)
- 使用
os.chdir()
动态修改工作目录