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

如何解决Python CSV转JSON时仅存最后一行、无法保存全部行的问题

问题根因

你的代码存在两个核心错误:

  • 循环内每次对data2直接赋值为当前行,会覆盖上一次遍历的行数据,没有把所有行累计存储
  • 循环内部每次都以w(覆盖写入)模式打开JSON文件,每次写入都会清空文件原有内容,最终只会保留最后一次写入的行数据
  • 原函数定义的第一个参数myFile完全未被使用,代码硬编码了读取的CSV文件名,灵活性差

修正后代码

import csv
import simplejson

def make_json(csvFilePath, jsonFilePath):
    # 定义列表存储所有行数据
    all_data = []
    with open(csvFilePath, encoding='utf-8') as csvf:
        csvReader = csv.DictReader(csvf)
        # 遍历所有行,逐个追加到列表避免覆盖
        for row in csvReader:
            all_data.append(row)
    # 所有行读取完成后一次性写入JSON文件
    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
        jsonf.write(simplejson.dumps(all_data, indent=4))

# 调用示例
# make_json('CSVFile.csv', 'output.json')

修改说明

  • 把原本单字典类型的data2改为列表类型的all_data,遍历过程中用append方法把每一行数据追加到列表里,不会覆盖历史数据
  • 将JSON文件写入操作移出遍历循环,等所有行都读取完成后,一次性把完整的列表写入文件,避免反复覆盖文件内容
  • 修复了原函数参数未使用、硬编码CSV文件名的问题,可通过参数灵活指定要读取的CSV文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:33:01