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_list.append(data)
file_names.append(filename)
return data_list, file_names
def export_to_excel( data_list, file_names, output_file ):
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)
df.index += 1
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)
export_to_excel(data_list, file_names, output_file)
print(f"数据已导出到Excel文件: {output_file}")