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

Python批量转换DATA文件夹内CSV格式.logs文件为JSON遇仅转单个问题

问题原因

  • 核心错误:循环处理每个.logs文件时,输出的JSON文件名固定为data.json,且文件打开使用覆盖写入模式'w',每处理一个新文件就会覆盖上一个文件的转换结果,最终仅保留了最后处理的T1555.logs的转换内容。
  • 冗余代码:循环内的csvFilePath = []无实际作用,可以直接删除。

修正方案

根据需求可以选择以下两种实现方式:

方案1:每个.logs文件对应生成独立JSON文件(推荐)

修改输出文件名逻辑,为每个源文件生成同名的JSON文件,避免覆盖:

import csv 
import json 
import glob, os

def csv_to_json(csvFilePath, jsonFilePath):
    jsonArray = []
      
    # 读取csv格式的.logs文件
    with open(csvFilePath, encoding='utf-8') as csvf: 
        csvReader = csv.DictReader(csvf) 
        for row in csvReader: 
            jsonArray.append(row)
  
    # 写入对应JSON文件
    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf: 
        json.dump(jsonArray, jsonf, indent=4)

os.chdir(r"C:\Users\Arda\Desktop\DATA")

for file in glob.glob("**/*.logs", recursive = True):
    # 替换后缀生成对应json文件名
    json_file_name = f"{os.path.splitext(file)[0]}.json"
    csv_to_json(file, json_file_name)

运行后会在原目录下生成和.logs文件一一对应的JSON文件,比如T1003.001.logs对应生成T1003.001.json。


方案2:所有.logs内容合并到同一个JSON文件

如果需要把所有日志内容整合到一个文件,可以先汇总所有文件数据再统一写入:

import csv 
import json 
import glob, os

os.chdir(r"C:\Users\Arda\Desktop\DATA")
total_data = []

for file in glob.glob("**/*.logs", recursive = True):
    with open(file, encoding='utf-8') as csvf:
        csvReader = csv.DictReader(csvf)
        for row in csvReader:
            # 可选:新增来源字段区分数据所属的原文件
            row["source_log"] = file
            total_data.append(row)

# 统一写入总JSON文件
with open("all_data.json", 'w', encoding='utf-8') as jsonf:
    json.dump(total_data, jsonf, indent=4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:48:02