在Python中读取gzip压缩数据

时间:2015-05-24 12:30:07

标签: python compression h5py

我有一个* .tar.gz压缩文件,我想用Python 2.7阅读。该文件包含多个h5格式的文件以及一些文本文件。我是Python的新手。这是我正在努力改编的代码:

      `subset_path='c:\data\grant\files'
      f=gzip.open(filename,'subset_full.tar.gz')
      subset_data_path=os.path.join(subset_path,'f')

第一个语句标识包含数据的文件夹的路径。第二个语句告诉Python打开一个特定的压缩文件,第三个语句(希望)执行前两个语句的连接。

此代码下面的几行我在Python尝试使用'subset_data_path'赋值时遇到错误。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

gzip模块只会打开一个已压缩的文件,即my_file.gz。您有一个tar存档的多个文件也是压缩的。这需要解压缩和未压缩。

尝试使用tarfile模块,请参阅https://docs.python.org/2/library/tarfile.html#examples

编辑:要添加更多有关已发生事件的信息,您已成功将压缩的tarball打开到gzip文件对象中,该文件对象与标准文件对象几乎相同。例如,您可以调用f.readlines(),就像f是普通文件对象一样,它将返回未压缩的行。

但是,这实际上并没有将存档解压缩到文件系统中的新文件中。您没有创建子目录&#39; c:\ data \ grant \ files \ f&#39;,因此当您尝试使用路径subset_data_path时,您正在寻找不存在的目录。< / p>

以下应该有效:

import tarfile

subset_path='c:\data\grant\files'
tar = tarfile.open("subset_full.tar.gz")
tar.extractall(subset_path)
subset_data_path=os.path.join(subset_path,'subset_full')