关键词搜索

源码搜索 ×
×

python3_h5py_hdf5_遍历_查看文件结构

发布2021-01-10浏览782次

详情内容

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

pandas 的 hdf5 支持函数,好像没办法把 HDF5 文件的结构列出来。
只好使用 h5py,把HDF5文件的结构打印出来。输出的python基础教程是文本信息
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(mysp11,'(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()

    写入属性(attrs)到hdf5文件,请参看python3_pandas.HDFStore_h5py_HDF5_的笔记
    转载注明来源: 本文链接 来自osnosn的博客.

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载