VS Code中Python用open()打开文件报FileNotFoundError解决方法
VS Code运行Python报FileNotFoundError排查方案
这个报错的核心原因绝大多数时候不是文件真的不存在,是Python运行时的工作目录和你存放txt文件的目录不匹配:你在代码里写相对路径filename.txt时,Python只会从当前进程的工作目录下查找目标文件,不会默认从py脚本所在的文件夹找,VS Code默认的运行工作目录经常和脚本存放目录不一致,就会触发找不到文件的错误。另外提一句,open()函数默认读取模式就是r,所以f=open("filename.txt")和f=open("filename.txt","r")效果完全一致,和你这次的报错没有关系。
- 第一步:先定位Python实际查找文件的路径
在你报错代码的最开头加两行代码运行:
import os print(os.getcwd())
控制台打印出来的路径,就是Python当前查找filename.txt的实际目录,打开这个文件夹看,里面肯定没有你创建的那个txt文件。
- 第二步:快速验证问题根因
把open函数里的文件名换成txt文件的完整绝对路径测试,比如Windows下文件存在D:/python_project/test/filename.txt,注意路径里的反斜杠要么换成正斜杠,要么加r标记做原生字符串转义,比如r"D:\python_project\test\filename.txt",替换后运行代码如果能正常打开文件,就确认是相对路径和工作目录不匹配的问题。 - 第三步:选一种方案永久解决
- 修改VS Code运行配置:打开项目下的
.vscode/launch.json文件,添加配置项"cwd": "${fileDirname}",配置后Python运行时的工作目录会自动切换为当前编辑的py脚本所在的文件夹,只要把txt文件和py脚本放在同一个文件夹,写filename.txt的相对路径就能正常读取。 - 代码里动态拼接文件绝对路径,不依赖运行时工作目录,兼容性最强,不管在什么环境跑都不会出路径问题:
- 修改VS Code运行配置:打开项目下的
import os # 获取当前py脚本自身所在的文件夹绝对路径 script_path = os.path.dirname(os.path.abspath(__file__)) # 拼接txt文件名,得到文件的完整路径 target_file = os.path.join(script_path, "filename.txt") f = open(target_file, "r")
- 易踩的细节坑排查
- 检查Windows是否开启了文件扩展名隐藏:如果开了这个选项,你以为自己创建的是
filename.txt,实际很可能存成了filename.txt.txt,可以打开资源管理器的「显示-文件扩展名」开关,确认文件的真实后缀是.txt。 - 检查文件名拼写:有没有多余空格、全角字符、大小写不匹配的问题,比如实际文件叫
file_name.txt你写成了filename.txt,一样会找不到。 - 检查文件存放层级:如果txt没有和py脚本放在同一级文件夹,比如txt在py脚本的上层目录,相对路径要写成
../filename.txt,存放在子文件夹里要写成子文件夹名/filename.txt,路径层级不对也会触发报错。
- 检查Windows是否开启了文件扩展名隐藏:如果开了这个选项,你以为自己创建的是
内容的提问来源于stack exchange,提问作者ZOHA Yaghmayi
相关产品推荐
相关产品推荐

