これは、tar.gz でパターンを検索し、見つかったファイルを出力するために取り組んでいるコードです。
以前にこれに似た質問がありましたが、問題を理解しました-レベル9に圧縮されたtar.gzファイルを渡すと、pythonはnullポインター型エラーを返します-犯人はにあると思います.このコードは、通常のパラメーターのない 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