簡體   English   中英

如何使用python逐塊解壓縮多個文件.gz

[英]How to decompress multiple file .gz chunk by chunk with python

我試圖在下載過程中解壓縮非常大的.gz文件(commoncrawl Web提取),但是zlib在第一個文件(該文件似乎是許多串聯的gz文件)之后停止。

import requests,json,zlib
fn="crawl-data/CC-MAIN-2017-04/segments/1484560279933.49/warc/CC-MAIN-20170116095119-00381-ip-10-171-10-70.ec2.internal.warc.gz"
fn="https://commoncrawl.s3.amazonaws.com/"+fn
r = requests.get(fn, stream=True)
d = zlib.decompressobj(zlib.MAX_WBITS | 16)
for chunk in r.iter_content(chunk_size=2048):
    if chunk:
        outstr = d.decompress(chunk)
        print(len(chunk),chunk[:10].hex(),len(outstr),len(d.unused_data))

所有塊都進入“ unused_data”並且不解壓縮,只有第一個。

當管道輸送到zcat時,它的效果很好:

curl https://commoncrawl.s3... | zcat | ....

您幾乎給了自己的問題答案。 您正在處理用gzip流的連接(這本身就是一個有效的gzip流),所以當你得到eof從解壓的對象,你需要啟動一個新的decompressobj每個使用unused_data您從最后一個注意到開始下一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM