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

求助:如何使用Python将目录中的HDF5文件批量转换为NC文件?

Python批量转换HDF5到NetCDF文件

准备工作

先安装依赖库:

pip install h5py netCDF4

批量转换代码

下面是可遍历指定目录下所有HDF5文件并转换为NC文件的脚本:

import os
import h5py
from netCDF4 import Dataset

def hdf5_to_netcdf(hdf5_path, nc_path):
    # 打开HDF5文件
    with h5py.File(hdf5_path, 'r') as hdf:
        # 创建NetCDF文件
        with Dataset(nc_path, 'w', format='NETCDF4') as nc:
            # 递归复制HDF5的组和数据集到NetCDF
            def copy_group(hdf_group, nc_group):
                # 复制当前组的属性
                for attr_name, attr_value in hdf_group.attrs.items():
                    nc_group.setncattr(attr_name, attr_value)
                
                # 遍历组内对象
                for name, obj in hdf_group.items():
                    if isinstance(obj, h5py.Group):
                        # 创建对应NetCDF组
                        new_nc_group = nc_group.createGroup(name)
                        copy_group(obj, new_nc_group)
                    elif isinstance(obj, h5py.Dataset):
                        # 创建NetCDF变量并写入数据
                        nc_var = nc_group.createVariable(
                            name, 
                            obj.dtype, 
                            obj.shape
                        )
                        nc_var[:] = obj[:]
                        # 复制数据集属性
                        for attr_name, attr_value in obj.attrs.items():
                            nc_var.setncattr(attr_name, attr_value)
            
            # 从根组开始复制
            copy_group(hdf, nc)

# 设置目标目录(替换为你的实际用户目录路径)
target_dir = "/path/to/your/hdf5/files"

# 遍历目录下所有HDF5文件
for filename in os.listdir(target_dir):
    if filename.endswith(('.h5', '.hdf5')):
        hdf5_path = os.path.join(target_dir, filename)
        nc_filename = os.path.splitext(filename)[0] + '.nc'
        nc_path = os.path.join(target_dir, nc_filename)
        print(f"转换中: {filename} -> {nc_filename}")
        hdf5_to_netcdf(hdf5_path, nc_path)

print("全部转换完成")

关键细节说明

  • 数据类型兼容:HDF5中的基础数据类型(int、float、string等)可直接映射到NetCDF4,特殊类型需手动调整转换逻辑
  • 层级结构保留:脚本支持递归复制HDF5的组结构,保持原文件的层级关系
  • 元数据同步:会复制HDF5文件、组、数据集的所有属性信息
  • 路径替换:务必将target_dir替换为你的实际用户目录路径

若遇到特定HDF5结构的转换问题,可补充文件结构细节来调整代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:20:41