小编典典

如何区分HDF5数据集和具有h5py的组?

python

我使用Python包h5py(版本2.5.0)访问我的hdf5文件。

我想遍历文件的内容并对每个数据集执行一些操作。

使用visit方法:

import h5py

def print_it(name):
    dset = f[name]
    print(dset)
    print(type(dset))


with h5py.File('test.hdf5', 'r') as f:
    f.visit(print_it)

对于测试文件,我获得:

<HDF5 group "/x" (1 members)>
<class 'h5py._hl.group.Group'>
<HDF5 dataset "y": shape (100, 100, 100), type "<f8">
<class 'h5py._hl.dataset.Dataset'>

告诉我文件中有一个数据集和一个组。但是,除了用于type()区分数据集和组之外,没有其他明显的方法。不幸的是,h5py文档未对此主题进行任何说明。他们始终假设您事先知道什么是组,什么是数据集,例如,因为他们自己创建了数据集。

我想要类似的东西:

f = h5py.File(..)
for key in f.keys():
    x = f[key]
    print(x.is_group(), x.is_dataset()) # does not exist

使用h5py在Python中读取未知的hdf5文件时,如何区分组和数据集?如何获得所有数据集,所有组,所有链接的列表?


阅读 215

收藏
2021-01-20

共1个答案

小编典典

不幸的是,h5py api中没有内置的方法可以检查此项,但是您可以使用来简单地检查项目的类型is_dataset = isinstance(item, h5py.Dataset)

要列出文件的所有内容(尽管文件属性除外),您可以Group.visititems将其与带有项目名称和实例的可调用对象一起使用。

2021-01-20