2

这是我正在处理的代码,用于在 tar.gz 中搜索模式,然后输出找到的文件。

早些时候我有一个类似的问题,但我已经弄清楚了问题 - 当我传入一个已压缩到级别 9 的 tar.gz 文件时,python 返回一个空指针类型错误 - 我相信罪魁祸首在于高压缩级别,因为当我传入常规无参数 tar.gz 文件时,此代码有效...

所以,我试图做一个 gzip.open,但它没有正确提取文件......我试图找出其他方法来搜索和检索带有模式的文件,而无需解压缩整个文件,因为这会花费很多不必要的空间被用完。例如,从 gzip 文件流式传输 zcat 是否有效?

这是我处理过的一些代码的片段

tar = tarfile.open(tarName, 'r:gz')
#tar = gzip.open(tarName, 'rb')
#tar = tarfile.open(sys.stdin.read(), 'r')

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):
            print "Instance found at " + currentFile.name
4

0 回答 0