python3_h5py_hdf5_遍歷_查看文件結構


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()

字數補丁,字數補丁,字數補丁,字數補丁,字數補丁,字數補丁,字數補丁,字數補丁,字數補丁


轉載注明來源: 本文鏈接 來自osnosn的博客.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM