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

如何批量处理500个文件夹中的同名文件并合并输出到同一CSV?

批量处理H5文件并合并结果到单个CSV:可行方案

完全可行,只需对原代码做批量遍历和结果收集的修改,以下是具体实现:

修改后的完整代码

import h5py
import numpy as np
import os

# 根目录:包含1-500文件夹的父目录
root_dir = '/Users/D/Desktop/Files500'
# 存储所有处理后的数据
all_processed_data = []

# 遍历1到500的文件夹
for folder_num in range(1, 501):
    # 构建当前H5文件的路径
    h5_file_path = os.path.join(root_dir, str(folder_num), 'FIELD-3D.h5')
    
    # 读取H5文件中的数据
    with h5py.File(h5_file_path, 'r') as h5_file:
        raw_data = np.array(h5_file['Zone']['TOp']['data'])
    
    # 扁平化数据
    flattened_data = raw_data.flatten(order='C')
    
    # 执行插值处理(修正原代码中x未定义的问题)
    iter_num = 10
    current_idx = iter_num
    original_length = len(flattened_data)
    
    while current_idx < original_length:
        # 在指定位置插入相邻元素的平均值
        flattened_data = np.insert(flattened_data, current_idx, (flattened_data[current_idx] + flattened_data[current_idx-1])/2)
        current_idx += iter_num
        original_length += 1  # 插入元素后数组长度增加,更新基准长度
    
    # 将当前文件的处理结果加入列表
    all_processed_data.append(flattened_data)

# 合并所有数据并保存到CSV
# 情况1:每个文件的处理结果作为一行(要求所有处理后的数据长度相同)
# np.savetxt('merged.csv', np.array(all_processed_data), delimiter=',', fmt='%f')

# 情况2:所有数据拼接成一维数组(适用于长度不同的情况)
merged_data = np.concatenate(all_processed_data)
np.savetxt('merged.csv', merged_data, delimiter=',', fmt='%f')

关键修改说明

  • 批量遍历:通过range(1,501)循环遍历所有文件夹,动态构建每个H5文件的路径,避免硬编码单个路径。
  • 文件资源管理:使用with语句自动管理H5文件的打开与关闭,避免资源泄漏。
  • 修正原代码缺陷:原代码中x未定义,这里改用original_length跟踪数组长度,每次插入元素后更新该值,确保循环逻辑正确。
  • 结果收集与合并:先将每个文件的处理结果存入列表,最后一次性合并写入CSV,避免多次写入导致文件内容被覆盖。

根据你的需求选择对应的合并方式:如果每个文件处理后的数据长度一致,用情况1按行保存;如果长度不同,用情况2拼接成一维数组保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:25:27