2013-04-09 153 views
5

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

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

任何关于使用什么命令的建议,或者我是否以错误的方式处理事情?

回答

3

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

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

也有一些问题,你如何挑块大小,以优化文件大小/访问,请参阅压缩引导我挂。

我不记得默认情况下哪个压缩(如果有的话)。

+1

是的我已经尝试过,但它似乎只适用于我创建一个新的文件,例如。我可以创建一个块大小(100,100)的新文件,该文件启用了gzip/szip/lzf压缩。当我加载一个现有的文件时,压缩似乎实际起作用的唯一方法是如果原始文件的内容被覆盖并且创建一个新文件(与原文件的名称相同)。 当我加载一个文件,创建一个分块的数据集,启用压缩,然后关闭文件,似乎没有任何影响或改变。我觉得我错过了一个步骤,不知道它是什么。 – kromegaman 2013-04-10 07:48:20

+0

@kromegaman压缩和块大小是文件如何写入磁盘的指导原则。我不认为这是你可以改变现有文件的东西,因为它已经写好了。我认为改变压缩/块的唯一方法是用这些设置编写一个新文件。 – Bitwise 2013-04-10 12:36:11

+0

是的,我用得越多,看起来就越是这样。我想我必须创建一个新文件和数据集,将现有文件中的数据复制到新文件中,然后在创建新文件时对其进行压缩。尽管如此,非常感谢您的帮助! – kromegaman 2013-04-10 17:38:20