hdf5 文件与 hdf 文件不同吗?

  • 本文关键字:文件 hdf hdf5 python hdf
  • 更新时间 :
  • 英文 :


我有几个hdf文件,但我无法弄清楚如何在python中打开它们。当我尝试通过h5py阅读它时。File(filename, 'r') 命令,它导致了一个 OSError。

OSError: Unable to open file (file signature not found)

有两种类型的HDF文件。HDF集团目前维护的规范是HDF5。旧版本是HDF4,不再维护。这两种类型是完全不同的格式。

为了区分这两者,您可以查看文件的前 4 个字节:

hf = open(filename, 'rb')
bts = hf.read(4)
if bts == b'x89HDF':
print('HDF5')
elif bts == b'x0ex03x13x01':
print('HDF4')

HDF4 标头签名的含义如下:

b''.join([(x+64).to_bytes(1, 'big') for x in list(b'x0ex03x13x01')])

返回保留给 HDF 格式的发明者国家超级计算应用中心b'NCSA'

b'x89HDF'是 8 字节 HDF5 签名b'x89HDFx0dx0ax1ax0a'的前 4 个字节。字母HDF标识文件格式,其他不可打印的字符用于确保HDF5文件可以轻松识别。

要读取 HDF5 文件,您可以使用 HDF 组支持的 h5py 模块。对于HDF4文件,有许多Python绑定到HDF低级接口。

NASA PyHDF已经有一段时间没有更新了。它不仅支持通用的HDF4文件,还支持NASA自己的HDF-EOS扩展。

Unidata NetCDF4 库保持 NetCDF3兼容性,NetCDF3 与 HDF4 兼容。

from netCDF4 import Dataset
ds = Dataset(filename, 'r')

最新更新