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

Python向空JSON文件写入灯具亮度数据触发JSONDecodeError如何解决?

问题排查及修复方案

核心报错原因

你初始的data.json是空文件,执行json.load()读取空内容时,无法解析出合法的JSON结构,直接抛出JSONDecodeError,这是触发报错的直接原因。

其他隐藏问题

  • 误用Python内置关键字dict作为变量名,属于不规范写法,容易触发后续隐藏错误
  • 遍历灯具的循环内反复读写文件,性能开销大,完全没有必要
  • 字典更新逻辑错误:每次生成的配置都带顶层light键,调用update时如果已存在light键会直接覆盖整个light的值,最终只会保留最后一个灯具的配置,无法实现追加多个灯具的需求

修复后代码

import json

def first_start(lamps: list):
    # 先处理文件读取逻辑,兼容空文件/不存在的文件
    data = {}
    try:
        with open("data.json", "r") as file:
            data = json.load(file)
    except (json.JSONDecodeError, FileNotFoundError):
        # 文件不存在、为空、内容不合法都初始化为空字典
        data = {}
    
    # 统一处理所有灯具配置
    if "light" not in data:
        data["light"] = {}
    for lamp in lamps:
        data["light"][lamp] = {"brightness": 0}
    
    # 一次性写入文件
    with open("data.json", "w") as file:
        json.dump(data, file, indent=2) # indent=2为可选参数,用来格式化JSON更易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:00:06