圧縮されたコンテンツと 32 バイトのヘッダーで構成されるファイルがあります。ヘッダーには、タイムスタンプ、圧縮サイズ、非圧縮サイズなどの情報が含まれています。
ファイル自体は約 490mb で、ヘッダーは非圧縮サイズが 2.7gb に近いことを示しています (圧縮サイズが 752mb であると信じているため、明らかに誤りです)。
ヘッダーを取り除き、圧縮されたペイロードを生成しました。zlib で圧縮解除できます。
問題は、490mb よりもはるかに小さい 19kb のみを解凍していることです (最低限必要ですが、非圧縮で約 700mb を期待しています)。
私のコードは以下の通りです:
import zlib
def consume (inputFile):
content = inputFile.read()
print "Attempting to process " + str(len(content)) + " bytes..."
outfile = open('output.xml', 'w')
inputFile = zlib.decompress(content)
print "Attempting to write " + str(len(inputFile)) + " bytes..."
outfile.write(inputFile)
outfile.close()
infile = open('payload', 'rb')
consume(infile)
infile.close()
プログラムを実行すると、次のように出力されます。
489987232 バイトを処理しようとしています... 18602 バイトを書き込もうとしています...
を使用しようとしましたがzlib.decompressionobj()
、これにより誤ったヘッダー警告が生成されます。zlib.decompress()
正常に動作し、期待どおりの解凍された XML を生成します...それが少なすぎます。
ポインタや提案は大歓迎です!