Поврежденные файлы при создании файлов HDF5 без их закрытия (h5py)
Я использую h5py для хранения экспериментальных данных в контейнере HDF5.
В интерактивном сеансе я открываю файл, используя:
measurement_data = h5py.File('example.hdf5', 'a')
Затем я записываю данные в файл, используя некоторые самописные функции (может быть много ГБ данных за пару дней эксперимента). В конце эксперимента я обычно закрывал файл, используя
measurement_data.close()
К сожалению, время от времени случается, что интерактивный сеанс заканчивается без моего явного закрытия файла (случайное прекращение сеанса, отключение питания, сбой ОС из-за какого-либо другого программного обеспечения). Это всегда приводит к повреждению файла и потере полных данных. Когда я пытаюсь открыть его, я получаю сообщение об ошибке:
OSError: Unable to open file (File signature not found)
Я также не могу открыть файл в HDFview или любом другом программном обеспечении, которое я пробовал.
Есть ли способ избежать поврежденного файла, даже если он явно не закрыт? Я читал об использовании с операторомВот, но я не уверен, поможет ли это, когда сессия неожиданно заканчивается.Можно ли каким-то образом восстановить данные в поврежденных файлах? Доступна ли программа ремонта?Всегда открывать и закрывать файл для каждого доступа на запись звучит довольно неблагоприятно для меня, потому что я постоянно пишу данные из множества различных функций и потоков. Так что я был бы более счастлив с другим решением.