我想从我从 MODIS 网站下载的hdf文件中提取数据。链接中提供了一个示例文件。我正在使用以下代码行读取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文件,但我收到同样的错误。这里似乎有什么错?
答案 0 :(得分:4)
我认为可能存在两个问题:
1)由于文件扩展名为“hdf”,这可能是HDF4文件。 HDF5文件通常具有“.hdf5”或“.h5”的扩展名。我不确定h5py是否能够读取HDF4文件。
2)也许您必须更改文件本身的权限。如果您在linux机器上,请尝试:chmod +r file.hdf
您可以尝试使用HDFView打开文件。该软件可在多个平台上使用。您可以使用它轻松检查文件的属性。
答案 1 :(得分:2)
这听起来像文件权限错误,甚至文件存在。也许添加一些检查,如
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')
答案 2 :(得分:0)
我有同样的问题,后来发现我的文件只有&#34;只读&#34;,由于某种原因停止了h5py读取它。将权限修改为&#34;写&#34;后,我能够阅读它。不知道为什么会这样设置。