【发布时间】:2021-08-05 14:57:26
【问题描述】:
我正在转换一个大型数据库以存储在 HDF5 文件中。为了熟悉 H5Py(3.2.1 版)和 HDF5,我阅读了docs for H5Py 并编写了一个小脚本,将随机数据存储在 HDF5 文件中,如下所示。
import h5py
import numpy as np
def main():
f = h5py.File('testFile.hdf5', 'w')
simBigData = np.random.randint(50, size=(24, 6), dtype=np.int32)
simSmallData = np.random.randint(50, size=(8, 6), dtype=np.int32)
simOut = np.random.randint(50, size=(8, 6), dtype=np.int32)
grp = f.create_group('testGroup')
dsBigData = grp.create_dataset('bigData', data=simBigData)
dsSmallData = grp.create_dataset('smallData', data=simSmallData)
dsOut = grp.create_dataset('out', data=simOut)
print('HDF5 Data')
print(f['testGroup/bigData'])
print(f['testGroup/smallData'])
print(f['testGroup/out'])
f.close()
if __name__ == '__main__':
main()
当我运行这个脚本时,我得到以下输出,所以肯定已经写了一些东西,至少在内存中。
HDF5 Data
<HDF5 dataset "bigData": shape (24, 6), type "<i4">
<HDF5 dataset "smallData": shape (8, 6), type "<i4">
<HDF5 dataset "out": shape (8, 6), type "<i4">
我的目录中有一个大约 5kB 的 HDF5 文件。但是,当我用 HDFView(2.11 版)打开它时,我得到一个空白文件。单击底部的元数据选项卡,我得到以下内容,文件中似乎没有显示任何内容:
/ (0)
Group size = 0
Number of attributes = 0
如何让 H5Py 真正正确地写入文件?
【问题讨论】:
-
这可能是由于与 HDFview 不兼容。尝试使用 h5py 重新加载并检查是否一切正常。
-
您是否安装了
h5dump或其他h5实用程序?我可以用它来读取你的文件,或者在新的 python 脚本中打开文件。我有 HDFView,但没怎么用过。 -
我也无法使用
HDFView查看h5py文件,但使用h5dump则没有。我的h5py.version.hdf5_version_tuple是 (1,12,0),但HDFView2.11,版本 HDF5 1.10.4(linux 默认源)。 -
如上所述,它可能与 h5py 3.2 和 HDFView 2.11 使用的 HDF5 版本不兼容。那个版本的 HDFView 已经有好几年了。使用当前版本进行测试——3.1.2
-
我要去看看软件版本。我不知道 Ubuntu 20.04 存储库中的内容如此古老。