我有一个* .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'赋值时遇到错误。
发生了什么事?
答案 0 :(得分:0)
gzip
模块只会打开一个已压缩的文件,即my_file.gz
。您有一个tar
存档的多个文件也是压缩的。这需要解压缩和未压缩。
尝试使用tarfile
模块,请参阅https://docs.python.org/2/library/tarfile.html#examples
编辑:要添加更多有关已发生事件的信息,您已成功将压缩的tarball打开到gzip文件对象中,该文件对象与标准文件对象几乎相同。例如,您可以调用f.readlines()
,就像f
是普通文件对象一样,它将返回未压缩的行。
但是,这实际上并没有将存档解压缩到文件系统中的新文件中。您没有创建子目录' c:\ data \ grant \ files \ f',因此当您尝试使用路径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')