使用h5py以'w'模式打开HDF5文件后无法查看键的问题
HDF5文件用'w'模式打开后数据消失的原因及解决办法
问题核心原因
h5py中'w'模式的本质是创建新的空HDF5文件:如果目标文件已存在,该模式会直接清空原文件的所有元数据(记录数据集、键名的核心信息),相当于把原文件变成一个全新的空HDF5容器,因此打开后看不到任何键。
至于你提到的文件大小没变、diff对比和备份文件无差异,是因为HDF5的底层存储特性——它只是重置了文件的元数据区域,磁盘上原来的旧数据块暂时还没被覆盖,但h5py读取时只识别有效的元数据结构,所以原有的键和数据对h5py来说已经“不存在”了。备份文件没被修改,元数据完整,所以还能正常读取。
正确的打开模式
如果需要读取并修改现有HDF5文件,或者保留原有内容进行写入,应该用以下两种模式:
'r+':读写模式,仅能打开已存在的文件,保留所有原有内容,支持修改和添加操作。'a':追加模式,文件不存在则创建,存在则保留原有内容,同样支持读写操作。
示例代码
用'r+'模式查看并修改文件:
import h5py with h5py.File('myfile', 'r+') as f: print(list(f.keys())) # 正常显示原有键名 # 示例:添加新数据集 f['new_data'] = [10, 20, 30]
用'a'模式查看并追加内容:
import h5py with h5py.File('myfile', 'a') as f: print(list(f.keys())) # 正常显示原有键名
内容的提问来源于stack exchange,提问作者Virginia B
相关产品推荐
相关产品推荐

