Ошибка чтения hdf-файла при использовании пакета h5py для python

Я хочу извлечь данные из файлов hdf, которые я скачал с сайта MODIS. Пример файла приведен в ссылке. Я читаю файл hdf, используя следующие строки кода:

>>> import h5py
>>> f = h5py.File( 'MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf', 'r' )

Ошибка, которую я получаю:

Traceback (most recent call last):
    File "<pyshell#3>", line 1, in <module>
f = h5py.File( 'MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf', 'r' )
    File "C:\Python27\lib\site-packages\h5py\_hl\files.py", line 165, in __init__
fid = make_fid(name, mode, userblock_size, fapl)
    File "C:\Python27\lib\site-packages\h5py\_hl\files.py", line 57, in make_fid
fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl)
    File "h5f.pyx", line 70, in h5py.h5f.open (h5py\h5f.c:1640)
IOError: unable to open file (File accessability: Unable to open file)

Я пробовал несколько других файлов hdf из разных источников, но я получаю ту же ошибку. В чем здесь вина?

3 ответа

Решение

Я думаю, что могут быть две возможные проблемы:

1) Поскольку расширение файла "hdf", возможно, это файл HDF4. Файлы HDF5 обычно имеют расширение ".hdf5" или ".h5·". Я не уверен, что h5py умеет читать файлы HDF4.

2) Возможно, вам придется изменить права доступа к самому файлу. Если вы работаете в Linux, попробуйте: chmod +r file.hdf

Вы можете попробовать открыть свой файл с HDFView. Это программное обеспечение доступно на нескольких платформах. Вы можете проверить свойства файлов очень легко с ним.

Это звучит как ошибка разрешения файла или даже существование файла. Может быть, добавить некоторые проверки, такие как

import os

hdf_file = 'MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf'

if not os.path.isfile(hdf_file):
    print 'file %s not found' % hdf_file

if not os.access(hdf_file, os.R_OK):
    print 'file %s not readable' % hdf_file

f = h5py.File(hdf_file, 'r')

У меня была та же проблема, и позже я обнаружил, что мой файл имел только "только для чтения", что по какой-то причине остановило h5py для его чтения. После изменения разрешения на "запись" я смог прочитать его. Не уверен, почему это было настроено так.

Другие вопросы по тегам