Windows环境下反复出现FileNotFoundError [Errno 2]问题求助
问题原因与解决方法
核心原因分析
1. VS Code 当前工作目录与代码文件目录不一致
Python 执行时默认从当前工作目录查找文件,而非代码文件所在的目录。如果在VS Code中仅单独打开pyWork里的某个.py文件,而非直接打开整个pyWork文件夹作为工作区,那么VS Code的默认工作目录可能是用户根目录(C:\Users\xxxx)或桌面,而非C:\Users\xxxx\Desktop\pyWork。这种情况下,代码里的相对路径会指向错误目录,自然找不到目标文件。
2. Windows 文件扩展名隐藏导致文件名匹配错误
旧Windows系统默认隐藏已知文件类型的扩展名,比如你的Excel文件实际名称可能是Data_File_2.xlsx.xlsx(拷贝时重复添加了扩展名),但资源管理器仅显示Data_File_2.xlsx,代码中写的文件名与实际文件不匹配,就会触发找不到文件的异常。txt文件也可能存在同样问题。
3. U盘拷贝文件的权限/锁定问题
从U盘拷贝到Windows的文件,可能被系统标记为“来自外部设备的文件”,旧Windows会对这类文件做安全限制,导致Python进程没有读取权限——这种权限问题有时会伪装成FileNotFoundError报错。
解决步骤
1. 修正VS Code工作目录
- 关闭当前VS Code窗口,右键点击pyWork文件夹,选择“通过Code打开”,此时VS Code的工作目录就是pyWork,运行代码时相对路径能正确定位文件。
- 或者在VS Code终端手动切换目录:
再运行Python脚本。cd C:\Users\xxxx\Desktop\pyWork - 最稳妥的方式是在代码中动态拼接文件路径,避免依赖工作目录:
import os import openpyxl # 获取当前脚本所在目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接目标文件路径 file_path = os.path.join(script_dir, "Data_File_2.xlsx") fw = openpyxl.load_workbook(file_path)
2. 显示文件扩展名并核对文件名
- 打开Windows资源管理器,点击顶部“查看”选项卡,勾选“文件扩展名”。
- 仔细核对pyWork目录下的文件名与代码中写的完全一致(Windows文件名不区分大小写,但保持一致可避免不必要的问题)。
3. 解除文件锁定与检查权限
- 右键点击出问题的文件,选择“属性”,若“常规”选项卡中有“解除锁定”按钮,点击解除。
- 切换到“安全”选项卡,确认当前登录用户拥有“读取”权限,若没有则点击“编辑”添加读取权限。
为什么异常会持续触发?
并非首次异常导致后续报错,而是根源问题始终未解决——不管是工作目录错误、文件名不匹配还是权限限制,只要这些问题存在,任何用相对路径读取同目录文件的代码都会找不到目标文件,自然每次运行都会触发FileNotFoundError。
内容的提问来源于stack exchange,提问作者molik
相关产品推荐
相关产品推荐

