【问题标题】:Writing Data to an HDF5 File Using H5Py Results in an Empty File使用 H5Py 将数据写入 HDF5 文件会导致空文件
【发布时间】: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),但 HDFView 2.11,版本 HDF5 1.10.4(linux 默认源)。
  • 如上所述,它可能与 h5py 3.2 和 HDFView 2.11 使用的 HDF5 版本不兼容。那个版本的 HDFView 已经有好几年了。使用当前版本进行测试——3.1.2
  • 我要去看看软件版本。我不知道 Ubuntu 20.04 存储库中的内容如此古老。

标签: python hdf5 h5py


【解决方案1】:

根据@hpaulj 的 cmets,我调查了不同的版本。 Ubuntu 存储库中的 HDFView 版本太旧,无法打开生成的 HDF5 文件。切换到 h5dump,我能够验证我的文件结构是否正确写入。

【讨论】:

    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2020-06-19
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多