You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,可以打开资源管理器的「文件扩展名」显示开关,确认文件的真实全名。

可行解决方案
  • 最稳妥的方案(推荐,不受运行环境、工作目录影响):基于当前脚本的自身路径拼接目标文件的绝对路径,彻底摆脱工作目录的影响
    修正后的代码:
    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()
    
    更规范的写法可以用Python的上下文管理器,不需要手动调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:45:43