如何在Python中检查.h5文件

2024-10-02 00:41:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如何查看给定的.h5文件在Python中有哪些变量、数据集等?在

我可以通过运行这个来读取文件

import h5py
f = h5py.File(filename, 'r')

现在如何查看.h5文件中有哪些变量?在

运行f.keys()输出非信息性的

^{pr2}$

在Matlab中,我只调用h5disp(文件名),但想知道如何在Python中实现它


Tags: 文件数据import文件名keysfilenamefile信息性
2条回答

也许有点过火,但我有这个可能对某些人有用:

from __future__ import print_function

def scan_hdf5(path, recursive=True, tab_step=2):
    def scan_node(g, tabs=0):
        print(' ' * tabs, g.name)
        for k, v in g.items():
            if isinstance(v, h5.Dataset):
                print(' ' * tabs + ' ' * tab_step + ' -', v.name)
            elif isinstance(v, h5.Group) and recursive:
                scan_node(v, tabs=tabs + tab_step)
    with h5.File(path, 'r') as f:
        scan_node(f)

简单的输入:

^{pr2}$

或者是另一个版本,它返回更有用的元素:

def scan_hdf52(path, recursive=True, tab_step=2):
    def scan_node(g, tabs=0):
        elems = []
        for k, v in g.items():
            if isinstance(v, h5.Dataset):
                elems.append(v.name)
            elif isinstance(v, h5.Group) and recursive:
                elems.append((v.name, scan_node(v, tabs=tabs + tab_step)))
        return elems
    with h5.File(path, 'r') as f:
        return scan_node(f)

有回报:

>>> scan_hdf5_2('/tmp/dummy.h5')
[u'/d1',
 (u'/g1', [u'/g1/d2', u'/g1/d3']),
 (u'/g2', [u'/g2/d4', (u'/g2/g3', [u'/g2/g3/d5'])])]

你试过了吗?在

print(list(f.keys()))

这样就可以得到hdf5文件中的所有组。如果f是一个组,则可以对数据集执行相同的操作。在

相关问题 更多 >

    热门问题