判断使用 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 文件是不是被压缩的主要内容,如果未能解决你的问题,请参考以下文章