Używam pakietu Python h5py (wersja 2.5.0), aby uzyskać dostęp do moich plików hdf5.Jak rozróżnić zestawy danych HDF5 i grupy za pomocą h5py?
Chcę przejść przez zawartość pliku i zrobić coś z każdym zestawem danych.
Stosując metodę visit
:
import h5py
def print_it(name):
dset = f[name]
print(dset)
print(type(dset))
with h5py.File('test.hdf5', 'r') as f:
f.visit(print_it)
dla pliku testowego ja uzyskania:
<HDF5 group "/x" (1 members)>
<class 'h5py._hl.group.Group'>
<HDF5 dataset "y": shape (100, 100, 100), type "<f8">
<class 'h5py._hl.dataset.Dataset'>
który mówi mi, że istnieje zbiór danych i grupy w pliku. Jednak nie ma oczywistego sposobu, z wyjątkiem użycia type()
do rozróżnienia między zestawami danych i grupami. The h5py documentation niestety nie mówi nic na ten temat. Zawsze zakładają, że wiesz wcześniej, jakie są grupy i jakie są zestawy danych, na przykład dlatego, że same tworzyły zestawy danych.
Chciałbym mieć coś takiego:
f = h5py.File(..)
for key in f.keys():
x = f[key]
print(x.is_group(), x.is_dataset()) # does not exist
Jak mogę odróżnić między grupami i zbiorów danych podczas odczytu nieznany plik hdf5 w Pythonie z h5py? Jak mogę uzyskać listę wszystkich zestawów danych, wszystkich grup wszystkich linków?
Dzięki. Domyślam się, że wszystkie grupy wywodzą się z 'h5py.Group', wszystkich miękkich linków z' h5py.SoftLink' i wszystkich twardych linków z 'h5py.HardLink'. – Trilarion
Ho, jeden wyjątek, o którym zapomniałem wspomnieć. Jeśli dobrze pamiętam, '' visititems'' nie odwiedza linków zewnętrznych. – Gall