如何使用 h5py 遍历 hdf5 文件
How do I traverse a hdf5 file using h5py
如何使用 h5py 遍历 hdf5 文件的所有组和数据集?
我想使用 for 循环或类似的东西从公共根检索文件的所有内容。
visit()
和 visititems()
是你的朋友。比照。 http://docs.h5py.org/en/latest/high/group.html#Group.visit。请注意 h5py.File
也是 h5py.Group
。示例(未测试):
def visitor_func(name, node):
if isinstance(node, h5py.Dataset):
# node is a dataset
else:
# node is a group
with h5py.File('myfile.h5', 'r') as f:
f.visititems(visitor_func)
好吧,这是一个旧话题,但我想无论如何我都会做出贡献。这就是我在类似情况下所做的。
对于这样设置的数据结构:
[group1]
[group2]
dataset1
dataset2
[group3]
dataset3
dataset4
我用过:
datalist = []
def returnname(name):
if 'dataset' in name and name not in datalist:
return name
else:
return None
looper = 1
while looper == 1:
name = f[group1].visit(returnname)
if name == None:
looper = 0
continue
datalist.append(name)
我还没有找到 os.walk 的 h5py 等价物。
这是一个很老的帖子,但我找到了一个基本上复制 h5ls 命令的解决方案 Python:
class H5ls:
def __init__(self):
# Store an empty list for dataset names
self.names = []
def __call__(self, name, h5obj):
# only h5py datasets have dtype attribute, so we can search on this
if hasattr(h5obj,'dtype') and not name in self.names:
self.names += [names]
# we have no return so that the visit function is recursive
if __name__ == "__main__":
df = h5py.File(filename,'r')
h5ls = H5ls()
# this will now visit all objects inside the hdf5 file and store datasets in h5ls.names
df.visititems(h5ls)
df.close()
此代码将遍历整个 HDF5 文件,并将所有数据集存储在 h5ls.names
中,希望对您有所帮助!
如何使用 h5py 遍历 hdf5 文件的所有组和数据集?
我想使用 for 循环或类似的东西从公共根检索文件的所有内容。
visit()
和 visititems()
是你的朋友。比照。 http://docs.h5py.org/en/latest/high/group.html#Group.visit。请注意 h5py.File
也是 h5py.Group
。示例(未测试):
def visitor_func(name, node):
if isinstance(node, h5py.Dataset):
# node is a dataset
else:
# node is a group
with h5py.File('myfile.h5', 'r') as f:
f.visititems(visitor_func)
好吧,这是一个旧话题,但我想无论如何我都会做出贡献。这就是我在类似情况下所做的。 对于这样设置的数据结构:
[group1]
[group2]
dataset1
dataset2
[group3]
dataset3
dataset4
我用过:
datalist = []
def returnname(name):
if 'dataset' in name and name not in datalist:
return name
else:
return None
looper = 1
while looper == 1:
name = f[group1].visit(returnname)
if name == None:
looper = 0
continue
datalist.append(name)
我还没有找到 os.walk 的 h5py 等价物。
这是一个很老的帖子,但我找到了一个基本上复制 h5ls 命令的解决方案 Python:
class H5ls:
def __init__(self):
# Store an empty list for dataset names
self.names = []
def __call__(self, name, h5obj):
# only h5py datasets have dtype attribute, so we can search on this
if hasattr(h5obj,'dtype') and not name in self.names:
self.names += [names]
# we have no return so that the visit function is recursive
if __name__ == "__main__":
df = h5py.File(filename,'r')
h5ls = H5ls()
# this will now visit all objects inside the hdf5 file and store datasets in h5ls.names
df.visititems(h5ls)
df.close()
此代码将遍历整个 HDF5 文件,并将所有数据集存储在 h5ls.names
中,希望对您有所帮助!