判断使用 h5py 创建的 HDF5 文件是不是被压缩

Posted

技术标签:

【中文标题】判断使用 h5py 创建的 HDF5 文件是不是被压缩【英文标题】:Determine if a HDF5 file created with h5py is compressed or not判断使用 h5py 创建的 HDF5 文件是否被压缩 【发布时间】:2022-01-09 03:23:01 【问题描述】:

我有一个相当简单的问题:

我能否确定使用h5py 生成的 HDF5 文件是否被压缩(不读取其中的数据)?我需要知道它,因为我想根据它是否被压缩来改变我的策略。

显然,我找不到答案,但如果有人问过,我很抱歉。

【问题讨论】:

【参考方案1】:

压缩作为数据集属性处理。换句话说,有些可能会被压缩,有些可能不会。读取数据值时不需要知道数据集是否被压缩——它是自动处理的。

但是,如果您仍然想这样做,有几种方法可以检查。

    HDF5 h5dump 实用程序:h5dump -H -p filename HDF5 h5ls 实用程序:h5ls -v filename 少量 Python/h5py 代码获取数据集的.compression 属性。

Python 代码如下:

with h5py.File('yourfile.h5') as h5f:
     print (h5f['dataset_name'].compression)

【讨论】:

天哪,这太容易了,我什至不用搜索就可以尝试compression 属性。疯狂的是,一个简单的谷歌搜索没有提出任何关于此的结果。无论如何,只是为了上下文,我需要知道文件是否被压缩,因为我发现如果文件有压缩,数据的读取会减慢我正在运行的任何其他线程(尤其是 GUI 线程),我需要更改读取数据的策略取决于数据是否被压缩。这样就可以了,非常感谢! 为了将来参考,请查看 h5py 文档。它包含有关文件、组和数据集方法和属性的所有详细信息。 h5py docs 数据集参考在这里:h5py dataset ref

以上是关于判断使用 h5py 创建的 HDF5 文件是不是被压缩的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 无法读取使用 h5py 创建的 hdf5 文件

如何扩展 h5py 以便我可以访问 hdf5 文件中的数据?

使用 h5py 删除 hdf5 数据集

使用 h5py 将光栅图像添加到 HDF5 文件

使用 HDF5 库和 h5py 模块的交替错误

使用 h5py py2 制作的 hdf5 在 py3 中使用 h5py 打开后损坏