Python读取和处理tar文件很好但不是tar.gz文件?

时间:2014-06-12 14:50:15

标签: python tar gz

处理代码以处理存档 这是我所拥有的片段:

事情发生变化的地方在这里:

tar = tarfile.open(tarName, 'r')

当我输入一个像上面这样的常规tar文件时它起作用但是当我尝试用tar.gz做的时候,x.read()行由于某种原因返回null ... 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

此外,继续错误是由于复制到堆栈溢出固定

编辑:如果有任何不同,可以使用Cygwin

1 个答案:

答案 0 :(得分:0)

是的!提取是不同的。那是因为压缩文件,首先是不同的。 .tar文件通常使用透明tar压缩进行压缩,而tar.gz文件使用“gzip”压缩进行压缩。还有其他压缩,tarfile模块(https://docs.python.org/2/library/tarfile.html)支持,即.bz2(使用bzip2压缩),.tar.Z等。有关更多详细信息,请参阅官方tarfile文档。