Python能读取并处理tar文件,但无法处理tar.gz文件?
我正在写一个处理压缩文件的代码,下面是我写的一部分:
问题出在这一行:
tar = tarfile.open(tarName, 'r')
当我输入一个普通的tar文件时,这段代码可以正常工作,但当我尝试用tar.gz文件时,x.read()这一行却返回了空值,不知道为什么……tar和tar.gz在解压时有什么区别吗?
tar = tarfile.open(tarName, 'r:gz')
directory = directoryname+'/'
if not os.path.exists(directory) and not (param1 == 2):
os.makedirs(directory)
start = time.time()
numTotal = 0;
numFound = 0;
#case 1: look for string anywhere
if (param2 == 0):
for currentFile in tar:
numTotal+=1;
x=tar.extractfile(currentFile)
if stringCheck in x.read():
numFound +=1
if (param1 == 2):
continue
new = open(directory + ntpath.basename(currentFile.name), 'w');
x.seek(0,0)
new.write( x.read() )
new.close()
if (param1 == 1):
对于
file newTarGz.tar.gz
的输出是:
newTarGz.tar.gz: gzip压缩数据,最后修改时间:2014年6月12日11:02:55,来自Unix
另外,之前的错误是因为我复制粘贴到Stack Overflow时出现的问题,已经修复了。
编辑:我在Cygwin上工作,这可能有影响。
1 个回答
0
没错!提取的方式是不同的。这是因为文件的压缩方式本身就不同。一个 .tar 文件通常是用透明的 tar 压缩方式压缩的,而 tar.gz 文件则是用“gzip”压缩的。还有其他的压缩方式,比如 tarfile 模块支持的 .bz2(使用 bzip2 压缩)、.tar.Z 等等。想了解更多细节,可以查看官方的 tarfile 文档。