当前位置: 首页 > article >正文

Json files to Excel - Python

Json files to Excel - Python

"""
该脚本用于从指定文件夹中的所有JSON文件中提取特定路径下的数据,
并将这些数据以及对应的文件名导出到一个Excel文件中。

功能描述:
1. 读取指定文件夹内的所有JSON文件。
2. 根据提供的数据路径,从每个JSON文件中提取相应的数据。
3. 将提取的数据和文件名整理成列表。
4. 将数据列表转换为Pandas DataFrame,并在第一列添加文件名。
5. 将DataFrame导出到Excel文件,行号从1开始。

使用方法:
- 确保脚本运行环境中已安装Pandas库。
- 修改脚本中的`folder_path`变量为存储JSON文件的文件夹路径。
- 修改`data_path`变量为需要提取的JSON数据路径。
- 修改`output_file`变量为输出Excel文件的路径。

注意事项:
- 脚本假设所有JSON文件的结构都是一致的,并且每个文件中都包含指定路径下的数据。
- 如果JSON文件中的数据结构不一致,或者某些文件不包含指定路径下的数据,脚本可能需要相应的调整。
- 脚本中的行号调整是基于Pandas DataFrame的索引,这可能在某些情况下导致行号不连续。

依赖库:
- json: 用于解析JSON文件。
- pandas: 用于数据处理和导出Excel文件。
- os: 用于文件路径操作。
"""
import json
import pandas as pd
import os


def read_json_data( json_path, data_path ):
    with open(json_path, 'r', encoding='utf-8') as file:
        data = json.load(file)
    # 根据提供的对象路径获取数据
    current_data = data
    for key in data_path.split('.'):
        if current_data is not None:
            current_data = current_data.get(key)
    return current_data


def collect_data_from_folder( folder_path, data_path ):
    data_list = []
    file_names = []
    # 遍历文件夹中的所有文件
    for filename in sorted(os.listdir(folder_path)):
        if filename.endswith('.json'):
            json_path = os.path.join(folder_path, filename)
            data = read_json_data(json_path, data_path)
            if data is not None:  # 确保data不是None
                data_list.append(data)
                file_names.append(filename)
    return data_list, file_names


def export_to_excel( data_list, file_names, output_file ):
    # 将数据转换为DataFrame
    if all(isinstance(item, list) for item in data_list):
        df = pd.DataFrame(data_list)
    else:
        # 如果数据不是列表形式,将其转换为列表形式
        df = pd.DataFrame([item if isinstance(item, list) else [item] for item in data_list])

    # 添加文件名列
    df.insert(0, 'filename', file_names)

    # 将DataFrame的索引加1,使得Excel的行号从1开始
    df.index += 1

    # 导出到Excel文件,不保存原来的索引
    df.to_excel(output_file, index=False)


if __name__ == "__main__":
    # 用户输入
    folder_path = "./json_files"
    data_path = "sim_result.port.Mode_Expansion_T_net._data"
    output_file = "./out.xlsx"

    # 收集数据
    data_list, file_names = collect_data_from_folder(folder_path, data_path)

    # 导出到Excel
    export_to_excel(data_list, file_names, output_file)

    print(f"数据已导出到Excel文件: {output_file}")

http://www.kler.cn/a/326413.html

相关文章:

  • 热点更新场景,OceanBase如何实现性能优化
  • ElementPlus el-upload上传组件on-change只触发一次
  • C++析构函数详解
  • 场景营销在企业定制开发 AI 智能名片 S2B2C 商城小程序中的应用与价值
  • java 读取 有时需要sc.nextLine();读取换行符 有时不需要sc.nextLine();读取换行符 详解
  • SpringBoot集成itext导出PDF
  • 【QT】QWidget 重要属性
  • Golang | Leetcode Golang题解之第435题无重叠区间
  • Qt开发第一讲
  • ip池子的大小与什么相关?
  • echarts 导出pdf空白原因
  • Spring系统学习(五)——Spring数据库编程
  • YOLOv8改进 | 主干改进篇,华为的轻量化架构GhostNetV2改进特征提取网络
  • 前端项目依赖包中的依赖包漏洞解决方案
  • springboot实战学习(10)(ThreadLoacl优化获取用户详细信息接口)(重写拦截器afterCompletion()方法)
  • 解决VRM格式模型在Unity中运行出现头发乱飞等问题
  • Java | Leetcode Java题解之第443题压缩字符串
  • ECCV 2024 | 融合跨模态先验与扩散模型,快手处理大模型让视频画面更清晰!
  • 数据中心解决方案
  • 手写体识别毕设——人工智能和深度学习技术的快速发展
  • 前端安装 lerna
  • Knots_3D 9.3.0 一款教你绑绳结的手机应用
  • 高标准农田灌区信息化:为农业可持续发展注入新动力
  • 开源模型应用落地-qwen2.5-7b-instruct-LoRA微调-LLaMA-Factory-单机单卡-V100(十八)
  • 抽象工厂模式和工厂模式的区别
  • 使用 IntelliJ IDEA 连接到达梦数据库(DM)