HDF5文件转嵌套字典代码输出格式错误修复求助
问题排查
你的代码存在以下几个明显错误:
- 代码开头有冗余无效字符
driv,运行会直接抛出语法错误 - 递归逻辑误用全局字典:函数内部没有为每个子分组创建独立的子字典,所有层级的键都写入了最外层的全局字典
d,无法生成预期的嵌套结构 - 类型判断写法不严谨,直接比对type的写法兼容性差
- 打开的HDF5文件没有主动关闭,存在资源泄漏风险
修正后代码
import h5py import numpy as np def read_hdf5_file(file): # 每个分组创建独立的新字典,避免全局覆盖 group_dict = {} for key, val in file.items(): if isinstance(val, h5py.Dataset): group_dict[key] = np.array(val) else: # 子分组递归调用,返回的子字典直接赋值给当前键 group_dict[key] = read_hdf5_file(val) return group_dict if __name__=='__main__': # 用上下文管理器自动关闭文件,避免资源泄漏 with h5py.File("data.hdf5", "r") as file: res_dict = read_hdf5_file(file) # 可自行打印验证结构是否符合预期 print(res_dict.keys())
代码修改说明
- 移除了无效的
driv冗余代码 - 递归函数内部为每个分组单独创建局部字典,子分组递归返回的结果直接作为当前字典对应键的值,保证嵌套结构正确
- 用
isinstance(val, h5py.Dataset)做类型判断,写法更简洁兼容性更强 - 采用
with上下文管理器打开HDF5文件,运行结束自动释放文件资源,不需要手动调用close方法
内容的提问来源于stack exchange,提问作者Arunakiri Venkatachalam
相关产品推荐
相关产品推荐

