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

如何在指定目录创建JSON文件并修复Python运行时FileNotFoundError错误

错误原因分析
  • 文件打开模式使用错误:代码中使用了r只读模式打开文件,该模式要求目标文件必须已存在,你需要创建并写入新文件,应该使用w写入模式
  • 路径不规范:你传入的路径是相对路径,缺少根路径标识/,只有从系统根目录运行代码才能识别该路径;同时没有判断父目录是否存在,如果父目录不存在也会触发该报错
  • 写入逻辑冗余:json.dump已经完成了Python对象到JSON格式的序列化和写入操作,额外的fp.write(data)会导致文件内容异常,如果传入非字符串类型的data还会直接报错
  • 路径拼接方式不兼容:手动使用/拼接路径,在Windows系统下会出现路径分隔符不匹配的问题
修复后的代码
import json
import os

def writeToJSONFile(path, fileName, data):
    # 自动创建不存在的父目录
    os.makedirs(path, exist_ok=True)
    # 系统兼容的路径拼接
    filePathNameWExt = os.path.join(path, f"{fileName}.json")
    # 使用写入模式打开文件,指定编码避免乱码
    with open(filePathNameWExt, 'w', encoding='utf-8') as fp:
        json.dump(data, fp, ensure_ascii=False, indent=2)

# 路径开头补充/改为标准绝对路径
writeToJSONFile("/Users/bea/Desktop/iSight/Webservertesting/json", "data1", "book")
改动说明
  • 引入os模块,使用os.makedirs自动创建目标路径下所有不存在的父目录,exist_ok=True参数避免目录已存在时报错
  • 替换手动路径拼接为os.path.join,自动适配不同操作系统的路径分隔符
  • 将文件打开模式从r改为w,支持创建新文件写入内容,新增encoding='utf-8'参数避免特殊字符乱码
  • 删除冗余的fp.write语句,仅保留json.dump完成序列化写入,新增ensure_ascii=False避免中文转义,indent=2优化JSON文件可读性
  • 调用函数时传入的路径开头补充了/,改为标准绝对路径,避免相对路径依赖运行目录的问题

内容的提问来源于stack exchange,提问作者La Brewers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:39:01