如何使用h5py区分HDF5数据集和组?
作者:互联网
我使用Python包h5py(版本2.5.0)来访问我的hdf5文件.
我想遍历文件的内容并对每个数据集执行某些操作.
使用访问方法:
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 documentation对此话题一无所知.他们总是假设您事先知道什么是组以及数据集是什么,例如因为他们自己创建了数据集.
我希望有类似的东西:
f = h5py.File(..)
for key in f.keys():
x = f[key]
print(x.is_group(), x.is_dataset()) # does not exist
在使用h5py读取Python中的未知hdf5文件时,如何区分组和数据集?如何获取所有链接中所有组的所有数据集的列表?
解决方法:
不幸的是,在h5py api中没有内置的方法可以检查这个,但你只需用is_dataset = isinstance(item,h5py.Dataset)检查项目的类型.
要列出文件的所有内容(但文件的属性除外),您可以使用Group.visititems
和callable,它可以获取项目的名称和实例.
标签:python,hdf5,h5py 来源: https://codeday.me/bug/20191004/1854366.html