这是我正在努力搜索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