Подтвердить что ты не робот

Удаление набора данных hdf5 с использованием h5py

Есть ли способ удалить набор данных из файла hdf5, предпочтительно используя h5py? Или, альтернативно, можно ли перезаписать набор данных, сохраняя при этом другие наборы данных?

Насколько я понимаю, h5py может читать/записывать файлы hdf5 в 5 режимах

f = h5py.File("filename.hdf5",'mode')

где режим может быть r для чтения, r+ для чтения-записи, a для чтения-записи, но создает новый файл, если он не существует, w для write/overwrite и w-, который аналогичен w, но не работает, если файл уже существует. Я пробовал все, но никто, похоже, не работает.

Любые предложения очень ценятся.

4b9b3361

Ответ 1

Да, это можно сделать.

with h5py.File(input,  "a") as f:
    del f[datasetname]

Вам нужно будет открыть файл в режиме записи, например, добавить (как указано выше) или написать.

Как отмечено в комментариях @seppo-enarvi, целью ранее рекомендованной функции f.__delitem__(datasetname) является реализация оператора del, так что можно удалить набор данных с помощью del f[datasetname]

Ответ 2

Я не понимаю, что ваш вопрос должен делать с режимами открытия файла. Для чтения/записи r + - путь.

Насколько мне известно, удаление нелегко/возможно, в особенности независимо от того, что вы делаете, размер файла не будет сокращаться.

Но перезапись содержимого не проблема

f['mydataset'][:] = 0