自学内容网 自学内容网

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}")

原文地址:https://blog.csdn.net/xzy3150787/article/details/142491055

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!