如何查看給定.h5文件在Python中具有哪些變量,數據集等?如何在Python中檢查.h5文件
我可以讀通過運行這個
import h5py
f = h5py.File(filename, 'r')
我怎麼能現在看到我.h5文件中有哪些變量文件?
運行f.keys()
輸出無信息
KeysView(<HDF5 file filename (mode r)>)
在Matlab中我只需撥打h5disp(文件名),但想知道如何做到這一點在Python
如何查看給定.h5文件在Python中具有哪些變量,數據集等?如何在Python中檢查.h5文件
我可以讀通過運行這個
import h5py
f = h5py.File(filename, 'r')
我怎麼能現在看到我.h5文件中有哪些變量文件?
運行f.keys()
輸出無信息
KeysView(<HDF5 file filename (mode r)>)
在Matlab中我只需撥打h5disp(文件名),但想知道如何做到這一點在Python
或許矯枉過正,但我有這個,可能有人有用:
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)
而簡單的輸入:
>>> scan_hdf5('/tmp/dummy.h5')
/
- /d1
/g1
- /g1/d2
- /g1/d3
/g2
- /g2/d4
/g2/g3
- /g2/g3/d5
或返回的東西更多元素的替代版本可用 :
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'])])]
你使用python3嗎? –
yes ............ – gota
然後@Astrom建議的解決方案應該有幫助 –