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

如何用Python每次运行代码时向JSON文件追加有效数据?

问题分析与解决方法

原代码存在的问题

  • 语法错误:for i in arr_of_user_id语句末尾缺少冒号
  • 变量未定义:list_of_user_id未声明,与实际要追加的单个字典条目不符
  • 无效的列表推导:[{'owner_id': id} for id in zip(id)]逻辑混乱,误用内置函数id,无法生成预期的字典列表
  • 追加逻辑错误:循环时直接追加整个数组,而非单个用户条目
  • 错误使用a+模式:直接追加JSON字符串会导致文件出现[{}][{}]这类非法结构,因为JSON要求整个文件是单一合法的JSON对象/数组

正确实现方案

要实现向JSON文件安全追加数据,必须遵循读取-修改-覆盖写入的流程,同时处理文件不存在的情况,还可加入去重逻辑避免重复数据:

import json

arr_of_user_id = [12, 11, 34, 19]
# 格式化要添加的用户数据为字典列表
new_user_entries = [{"id": uid} for uid in arr_of_user_id]

# 读取现有JSON数据,处理文件不存在的场景
try:
    with open('filed.json', 'r', encoding='utf-8') as f:
        existing_data = json.load(f)
except FileNotFoundError:
    # 文件不存在时初始化空列表
    existing_data = []

# 去重:避免重复添加相同id的条目
existing_ids = {entry['id'] for entry in existing_data}
filtered_entries = [entry for entry in new_user_entries if entry['id'] not in existing_ids]

# 合并数据并写入文件
existing_data.extend(filtered_entries)
with open('filed.json', 'w', encoding='utf-8') as f:
    json.dump(existing_data, f, indent=4)  # indent参数让JSON格式更易读

关键说明

  • 不能用a+模式直接写入:JSON语法要求整个文件是单一的合法结构,直接追加会破坏结构,导致无法解析。必须读取全部内容修改后,用w模式覆盖写入,保证文件始终是合法的JSON。
  • 去重逻辑可选:如果不需要避免重复数据,可以去掉existing_ids和filtered_entries相关代码,直接执行existing_data.extend(new_user_entries)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:50:24