【问题标题】:Compression of existing file using h5py使用 h5py 压缩现有文件
【发布时间】:2013-03-31 23:55:30
【问题描述】:

我目前正在从事一个有关 HDF5 数据集压缩的项目,最近开始使用 h5py。我遵循了基本教程,并且能够在创建文件时打开、创建和压缩文件。但是,在压缩现有文件时我一直没有成功(这是我工作的目标)。

我尝试使用“r+”打开文件,然后压缩分块数据集,但文件大小保持不变。

关于使用什么命令或者我做错了什么有什么建议吗?

【问题讨论】:

    标签: python compression hdf5 h5py


    【解决方案1】:

    HDF 组提供set of tools 来转换、显示、分析和编辑和重新打包您的 HDF5 文件。

    您可以使用h5repack 实用程序压缩现有的 hdf5 文件。您还可以使用相同的实用程序更改块大小。

    h5repack 可以从命令行使用。

    h5repack file1 file2 //删除文件1的占用空间,保存为文件2。

    h5repack -v -l CHUNK=1024 file1 file2 //将1024的分块应用到file1

    h5repack -v -l CHUNK=1024 GZIP=5 file1 file2 //生成 1024 的块并压缩它 使用 GZIP 5 级压缩

    h5repack --help\获取可用的帮助文档

    Detailed documentation 也可用。

    【讨论】:

      【解决方案2】:

      压缩在 h5py 中非常容易使用。查看 Wiki HowToCompression 指南。 基本上,它会是这样的:

      ds = myfile.create_dataset('ds', shape, dtype, compression='lzf')
      

      如何选择块大小以优化文件大小/访问也存在一些问题,请参阅我链接到的压缩指南。

      我不记得默认情况下启用了哪种压缩(如果有)。

      【讨论】:

      • 是的,我已经尝试过了,但是它似乎只对我有用,例如在创建新文件时。我可以创建一个启用了 gzip/szip/lzf 压缩的块大小 (100,100) 的新文件。当我加载现有文件时,压缩似乎实际起作用的唯一方法是原始文件的内容被覆盖并创建一个新文件(与原始文件的名称相同)。当我加载文件、创建分块数据集、启用压缩然后关闭文件时,似乎根本没有任何影响或变化。我觉得我错过了一步,但不确定是什么。
      • @kromegaman 压缩和块大小是文件如何写入磁盘的指南。我不认为这是您可以为现有文件更改的内容,因为它已经编写好了。我认为更改压缩/块的唯一方法是使用这些设置编写一个新文件。
      • 是的,我用得越多,它看起来就越像那样。我想我必须创建一个新文件和数据集,将现有文件中的数据复制到新文件中,然后在创建新文件时压缩它。尽管如此,非常感谢您的帮助!
      • @kromegaman 根据 Bitwise 所说,压缩和块大小以及其他一些属性是在您创建 数据集 时设置的,之后无法更改。不同的数据集可以使用不同的压缩算法或块大小。此外,默认情况下没有压缩。
      猜你喜欢
      • 2016-01-04
      • 2022-01-09
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多