Python读取已存在的buddy.txt报FileNotFoundError问题求助
问题根因
使用相对路径'buddy.txt'调用open()时,Python的查找逻辑不是以当前运行的py脚本所在位置为基准,而是以当前Python进程的工作目录为基准。你遇到的报错本质是:运行代码时的工作目录,并不是你存放buddy.txt和01_files.py的c:\Users\97798\Desktop\python\Chapter_09\路径,所以Python按路径找不到文件。
你可以在open()调用前加两行代码验证当前工作目录:
import os print(os.getcwd())
运行后输出的路径,就是Python实际查找buddy.txt的位置,大概率是你用户根目录、或者IDE打开的上层项目文件夹,和文件实际存放位置不一致。
另外要先排除一个低级坑:Windows默认隐藏已知文件类型扩展名,你看到的buddy.txt很可能真实文件名是buddy.txt.txt,可以打开资源管理器的「文件扩展名」显示开关,确认文件的真实全名。
可行解决方案
- 最稳妥的方案(推荐,不受运行环境、工作目录影响):基于当前脚本的自身路径拼接目标文件的绝对路径,彻底摆脱工作目录的影响
修正后的代码:
更规范的写法可以用Python的上下文管理器,不需要手动调用import os # 获取当前01_files.py脚本所在的绝对文件夹路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接出buddy.txt的完整绝对路径 target_file = os.path.join(script_dir, 'buddy.txt') f = open(target_file, 'r') data = f.read() print(data) f.close()close(),避免资源泄露:import os script_dir = os.path.dirname(os.path.abspath(__file__)) target_file = os.path.join(script_dir, 'buddy.txt') with open(target_file, 'r') as f: data = f.read() print(data) - 临时修复方案:运行前面的
os.getcwd()拿到实际查找路径后,把buddy.txt移动到该路径下,原有代码不需要修改就能运行,但不推荐——换运行方式、换设备后很容易复现同样的问题。 - IDE配置方案:如果你用VSCode、PyCharm等编辑器运行代码,可以在运行配置里把工作目录修改为
01_files.py所在的Chapter_09文件夹,相对路径也能正常识别,但同样依赖本地配置,可移植性差。
内容的提问来源于stack exchange,提问作者Suyesh Bhandari
相关产品推荐
相关产品推荐

