【问题标题】:Error in reading hdf file using h5py package for python使用 python 的 h5py 包读取 hdf 文件时出错
【发布时间】:2014-11-10 23:27:01
【问题描述】:

我想从我从 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 文件,但我得到了同样的错误。这里似乎有什么问题?

【问题讨论】:

    标签: python h5py


    【解决方案1】:

    我认为可能有两个问题:

    1) 由于文件扩展名为“hdf”,可能这是一个 HDF4 文件。 HDF5 文件通常具有“.hdf5”或“.h5·”扩展名。我不确定 h5py 是否能够读取 HDF4 文件。

    2) 也许您必须更改文件本身的权限。如果您使用的是 linux 机器,请尝试:chmod +r file.hdf

    您可以尝试使用HDFView 打开您的文件。该软件可在多个平台上使用。您可以使用它非常轻松地检查文件的属性。

    【讨论】:

    • 感谢您的回复。我使用 HDFView 来可视化来自 hdf 文件的数据,它可以工作并且文件是 hdf4 格式。所以正如你所说,问题一定是 h5py 不能支持 hdf4 格式。我遇到了支持 hdf4 格式的 pyhdf。我想它会解决我的问题。顺便说一句,我没有chmod,我用的是windows。
    • 太好了!希望您可以通过pyhdf 完成您的工作。
    • 另一种方法是使用 h4toh5 将文件转换为 HDF5。这允许依赖最新的工具。 project home 上提供的工具。
    【解决方案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')
    

    【讨论】:

    • 感谢您的回复。该文件存在,实际上所有 139 个文件都存在,但为了确保我执行了您建议的检查,循环遍历文件夹中的每个文件以发现文件存在并且可以访问。
    【解决方案3】:

    我遇到了同样的问题,后来发现我的文件只有“只读”,这出于某种原因停止了 h5py 来读取它。将权限修改为“写”后,我就可以阅读了。不知道为什么会这样设置。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2021-04-09
      • 2020-02-12
      • 2016-04-08
      • 2019-09-24
      • 2017-08-26
      • 2021-02-22
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多