Удалить или обновить набор данных в HDF5? - PullRequest
2 голосов
/ 15 января 2009

Я хотел бы программно изменить данные, связанные с набором данных в файле HDF5. Кажется, я не могу найти способ удалить набор данных по имени (что позволяет мне снова добавить его с измененными данными) или обновить набор данных по имени. Я использую C API для HDF5 1.6.x, но указатели на любой HDF5 API были бы полезны.

Ответы [ 2 ]

6 голосов
/ 15 января 2009

Согласно инструкции пользователя :

В настоящее время HDF5 не предоставляет простого механизма для удаления набора данных из файла или для восстановления пространства, занимаемого удаленным объектом.

Так что о простом удалении не может быть и речи. Но раздел продолжается:

Извлечение набора данных и освобождение используемого им пространства можно выполнить с помощью функции H5Ldelete и служебной программы h5repack. С помощью функции H5Ldelete ссылки на набор данных могут быть удалены из файловой структуры. После удаления всех ссылок набор данных становится недоступным для любого приложения и фактически удаляется из файла. Способ восстановить пространство, занимаемое несвязанным набором данных, - записать все объекты файла в новый файл. Любой несвязанный объект недоступен приложению и не будет включен в новый файл. Запись объектов в новый файл может выполняться с помощью специальной программы или служебной программы h5repack.

2 голосов
/ 10 ноября 2016

Если вы хотите удалить набор данных в c ++, вам понадобятся следующие команды:

H5File m_h5File (pathAndNameToHDF5File, H5F_ACC_RDWR); //The hdf5 c++ object.
std::string channelName = "/myGroup/myDataset";
int result = H5Ldelete(m_h5File.getId(), channelName.data(), H5P_DEFAULT);

результат будет неотрицательным значением в случае успеха; в противном случае возвращает отрицательное значение. https://support.hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-Delete

Как сказал @MaxLybbert, пространство на жестком диске не восстанавливается. Вы должны использовать инструмент для перепаковки. Тем не менее, с HDF5 v.1.10 пространство может быть восстановлено. Но руководство пользователя еще не готово: https://support.hdfgroup.org/HDF5/docNewFeatures/NewFeaturesFileSpaceMgmtDocs.html

...