h5py очищающие флаги согласованности файлов - PullRequest
0 голосов
/ 29 ноября 2018

Я провел небольшое исследование и сохранил результаты в файле HDF5 с помощью модуля h5py.Я открывал и читал данные несколько раз, используя модуль h5py и инструмент просмотра HDF из группы HDF5.Это все работало нормально, пока однажды мой компьютер не сломался, когда файл был открыт в режиме просмотра HDF.

После перезагрузки компьютера я больше не мог открыть файл.Инструмент просмотра HDF показывает общую ошибку: «Ошибка открытия файла»

Я написал файл в h5py, поэтому я решил попробовать и использовать его для чтения данных.Файл был написан в режиме SWMR с libver = 'latest'.Я попробовал следующее:

with h5py.File(fpath, 'r', swmr=True, libver='latest') as f:
    pass

Возвращает ошибку «Ошибка OSE: невозможно открыть файл (файл еще не открыт для записи SWMR)»

with h5py.File(fpath, 'r') as f:
    pass

Возвращает ошибку «Ошибка OSE:Невозможно открыть файл (файл уже открыт для записи (может использовать файл h5clear для очистки флагов согласованности файлов)) "

Теперь мне интересно, реализован ли в модуле h5py параметр h5clear?Я нигде не могу найти информацию об этом.

Редактировать: Удалил файл (извините)

1 Ответ

0 голосов
/ 30 января 2019

Учитывая файл hdf5, который выдает эту ошибку, Unable to open file (file is already open for write/SWMR write), где у вас нет способа воссоздать файл, вы можете очистить флаг согласованности файла с помощью инструмента командной строки h5clear.

$> h5clear -s my_bad.h5

Один из способов получить утилиту h5clear (в Windows 10 или любой другой ОС) - установить h5py (или pandas, не уверен, кто за это отвечал) с помощью дистрибутива Anaconda Python.В моей системе исполняемый файл находился в каталоге bin среды: anaconda3/envs/my_env/Library/bin/h5clear.Я ожидаю, что вы также можете получить эту утилиту, установив h5py из pip, хотя я не проверял это.

Если у вас установлена ​​Anaconda, вы можете создать среду , установить пакеты, а затем запуститьh5clear с помощью следующих команд из командной строки.В Windows я использую git-bash , но это также должно работать из командной строки Anaconda или даже из командной строки Windows, если вы правильно настроили путь.

$> conda create --name demo

$> source activate demo

(demo) 
$> conda install h5py pandas

(demo)
$> h5clear -s my_bad.h5
...