Python报错No such file or directory found无法读取同目录文件解决方法
解决方案
你遇到的两个问题本质原因分别是:
- 相对路径查找文件失败:Python执行
open('文件名')时,是从当前运行环境的工作目录查找文件,而非脚本文件自身所在的目录——如果你运行脚本时终端停在其他路径、或者IDE打开的工作区是项目上层文件夹,哪怕文件和脚本同目录也会报找不到文件。 - 绝对路径下的Unicode编码错误:不同操作系统默认文件编码不一致,中文环境Windows默认用GBK编码读取文件,而绝大多数JSON文件是UTF-8编码,编码不匹配就会触发报错。
不要硬编码本地绝对路径,用以下写法可以同时解决两个问题,项目拷贝到任意设备都能正常运行:
import json import os # 获取当前脚本自身所在的文件夹路径,和运行时工作目录无关 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接同目录下JSON文件的路径,自动适配不同系统的路径分隔符 json_file_path = os.path.join(script_dir, 'intentii.json') # 显式指定UTF-8编码读取文件,规避跨系统编码问题 with open(json_file_path, 'r', encoding='utf-8') as f: intentii = json.load(f)
写法说明
- 基于
__file__内置变量定位脚本所在目录,不依赖运行时的工作路径,你提到的「所有读取当前文件夹内文件都报错」的共性问题,都可以用这个拼路径的方式解决 - 用
os.path.join拼接路径,自动适配Windows的\和macOS/Linux的/路径分隔符,不用手动处理跨系统路径格式问题 - 显式指定
encoding='utf-8',彻底解决不同系统默认编码不一致导致的Unicode报错 - 用
with上下文管理器读取文件,会自动关闭文件句柄,比手动写open().read()更稳妥
排查提示:如果改完代码还是提示找不到文件,打开系统的「显示文件扩展名」选项,确认你的JSON文件没有被隐藏后缀,实际文件名不是
intentii.json.txt这类错误名称。
内容的提问来源于stack exchange,提问作者Kileps
相关产品推荐
相关产品推荐

