osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

python3_h5py_hdf5_遍历_查看文件结构

转载注明来源: 本文链接 来自osnosn的博客,写于 2020-03-26.

  • pandas 的 hdf5 支持函数,好像没办法把 HDF5 文件的结构列出来。
  • 只好使用 h5py,把HDF5文件的结构打印出来。输出的是文本信息
    • python 3.6, 以下都是用 pip3 install 安装的
    • h5py 2.10.0 (h5py的文档)
    • numpy 1.18.2
    • pandas 1.0.3 (hdf5 的支持, 需要安装 tables)
    • tables 3.6.1 (PyTables' documentation)

方法1:

#!/usr/bin/python3
# -- coding:utf8 --

fname='myfilename.hdf5'

import h5py

def prt(name):
    print(name)

f = h5py.File(fname,'r')
f.visit(prt)
f.close()

方法2:

#!/usr/bin/python3
# -- coding:utf8 --

fname='myfilename.hdf5'

import h5py
import numpy as np

def h5list(f,tab):
    print(tab,'Group:',f.name,'len:%d'%len(f))
    mysp2=tab[:-1]+ '  |-*'
    for vv in f.attrs.keys():  # 打印属性
        print(mysp2,end=' ')
        print('%s = %s'% (vv,f.attrs[vv]))
    mysp=tab[:-1] + '  |-'
    for k in f.keys():
        d = f[k]
        if isinstance(d,h5py.Group):
            h5list(d,mysp)
        elif isinstance(d,h5py.Dataset):
            print(mysp,'Dataset:',d.name,'(size:%d)'%d.size)
            mysp1=mysp[:-1]+ '  |-'
            print(mysp1,'(dtype=%s)'%d.dtype)
            if d.dtype.names is not None:
                print(mysp,end=' ')
                for vv in d.dtype.names:
                    print(vv,end=',')
                print()
            mysp2=mysp1[:-1]+ '  |-*'
            for vv in d.attrs.keys():  # 打印属性
                print(mysp2,end=' ')
                try:
                    print('%s = %s'% (vv,d.attrs[vv]))
                except TypeError as e:
                    print('%s = %s'% (vv,e))
                except:
                    print('%s = ?? Other ERR'% (vv,))
            #print(d[:12])  # 打印12组数据看看
        else:
            print('??->',d,'Unkown Object!')

f = h5py.File(fname,'r')
h5list(f,'')
f.close()

字数补丁,字数补丁,字数补丁,字数补丁,字数补丁,字数补丁,字数补丁,字数补丁,字数补丁


转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/12574976.html 来自osnosn的博客.

posted on 2020-03-26 16:03  osnosn  阅读(3845)  评论(0编辑  收藏  举报