处理代码以处理存档 这是我所拥有的片段:
事情发生变化的地方在这里:
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
答案 0 :(得分:0)
是的!提取是不同的。那是因为压缩文件,首先是不同的。 .tar文件通常使用透明tar压缩进行压缩,而tar.gz文件使用“gzip”压缩进行压缩。还有其他压缩,tarfile模块(https://docs.python.org/2/library/tarfile.html)支持,即.bz2(使用bzip2压缩),.tar.Z等。有关更多详细信息,请参阅官方tarfile文档。