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

按序使用列表元素:多CSV转JSON仅处理首个文件问题排查

解决多CSV文件转JSON的遍历问题

问题根源

你的代码存在两个核心问题:

  • 没有将所有CSV文件路径存入列表,而是每次循环都覆盖csvlist变量,最终仅保留单个文件路径
  • main函数内的循环逻辑错误,误将单个文件路径的字符串长度当作文件数量来循环,实际根本没遍历所有文件

修正后的代码

import json
import csv
import os

# 收集所有CSV文件路径到列表
csv_files = []
folder_path = "C:/Users/folder_to_csv"
for file in os.listdir(folder_path):
    filename = os.fsdecode(file)
    if filename.endswith(".csv"):
        csv_files.append(os.path.join(folder_path, filename))

def convert_csv_to_json(csv_path):
    # 读取CSV文件并转为字典列表
    with open(csv_path, mode='r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        process_data = [row for row in reader]
    
    # 生成JSON字符串并写入对应文件
    json_obj = json.dumps(process_data, indent=4)
    json_filename = os.path.splitext(csv_path)[0] + ".json"
    with open(json_filename, mode='w', encoding='utf-8') as f:
        f.write(json_obj)
    
    print(f"已完成转换:{csv_path} -> {json_filename}")

def main():
    # 遍历所有CSV文件逐个转换
    for csv_path in csv_files:
        convert_csv_to_json(csv_path)

if __name__ == "__main__":
    main()

关键改进点

  • 用csv_files列表存储所有CSV文件路径,避免变量被覆盖
  • 将转换逻辑封装为独立函数,代码结构更清晰
  • 自动生成对应文件名的JSON文件(如test.csv转为test.json),而非仅打印JSON字符串
  • 指定编码为utf-8,避免中文乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:25:26