Я использую пакет Python h5py (версия 2.5.0) для доступа к моим файлам hdf5.Как отличить набор данных HDF5 от групп с h5py?
Я хочу пройти содержимое файла и сделать что-то с каждым набором данных.
Используя 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)
для тестового файла я получаю:
<HDF5 group "/x" (1 members)>
<class 'h5py._hl.group.Group'>
<HDF5 dataset "y": shape (100, 100, 100), type "<f8">
<class 'h5py._hl.dataset.Dataset'>
, который говорит мне, что есть набор данных и группу в файле. Однако нет очевидного способа, кроме использования type()
для различения наборов данных и групп. h5py documentation, к сожалению, ничего не говорит об этой теме. Они всегда предполагают, что вы заранее знаете, что такое группы и какие массивы данных, например, потому что они сами создавали наборы данных.
Я хотел бы иметь что-то вроде:
f = h5py.File(..)
for key in f.keys():
x = f[key]
print(x.is_group(), x.is_dataset()) # does not exist
Как я могу различать между группами и наборами данных при чтении неизвестный файл hdf5 в Python с h5py? Как я могу получить список всех наборов данных, всех групп, всех ссылок?
Спасибо. Я думаю, что все группы происходят из 'h5py.Group', всех софт-ссылок из' h5py.SoftLink' и всех жестких ссылок из 'h5py.HardLink'. – Trilarion
Хо, за одним исключением я забыл упомянуть. Если я правильно помню, '' visititems'' не посещает внешние ссылки. – Gall