严重问题:python没法解压缩gz文件!!!!
问题严重了,我需要使用Python解压缩gz文件,并且这些gz文件里面都是包含着不只一个文件的压缩包。
import gzip
import zipfile
file = gzip.GzipFile(strZipFile, "r ")
outFile = open(strDstFile , "w ")
outFile.write(file.read())
outFile.close()
发现没法把gz中的文件逐个解压缩,而是所有的文件都连在一起了
(就是说虽然可以解压缩,但是是把压缩包中的所有文件都一起解压缩到一个文件里了)
尝试使用zipfile这个包,结果发现它只支持zip文件,不支持gz文件!
支持zip文件:
> > > z = zipfile.ZipFile( " " "C:\\Downloads\\ftp\\log1\\1.zip " " ")
> > > print z.namelist()
[ '1-2006.xml ', '1-2007.xml ']
不支持gz文件:
> > > z = zipfile.ZipFile( " " "C:\\Downloads\\ftp\\log1\\1.gz " " ")
Traceback (most recent call last):
File " <interactive input> ", line 1, in ?
File "C:\Python24\lib\zipfile.py ", line 210, in __init__
self._GetContents()
File "C:\Python24\lib\zipfile.py ", line 230, in _GetContents
self._RealGetContents()
File "C:\Python24\lib\zipfile.py ", line 242, in _RealGetContents
raise BadZipfile, "File is not a zip file "
BadZipfile: File is not a zip file
这些gz文件都是在Linux下用gzip生成的。
有高人知道该怎么办吗?
[解决办法]
> > 问题严重了,我需要使用Python解压缩gz文件,并且这些gz文件里面都是包含着不只一个
> > 文件的压缩包。
你解压的是不是一个*.tar.gz的文件?*.tar.gz是先用tar把文件打包,再用gz把打包后的单个文件压缩。
所以如果你要解压的是*.tar.gz的文件,那么解压后确确实实应该是一个文件。
[解决办法]
好像确实是tar.gz,虽然扩展名只有gz。
[解决办法]
用tarfile试试,给你段代码:
import tarfile
targzfile = "xxxx.xml.gz "
outputpath = '. '
tar = tarfile.open(targzfile, "r:gz ")
for tarinfo in tar:
print tarinfo.name
tar.extract(tarinfo.name, outputpath)
tar.close()
自己修改下试试能否成功。祝好运。
[解决办法]
汗楼上的,怎么和我写得一样啊?