代码之家  ›  专栏  ›  技术社区  ›  Adarsh Raj

我如何阅读3GB的Gzip Compressed,提取后超过40GB

  •  0
  • Adarsh Raj  · 技术社区  · 4 年前

    我一直在尝试读取3GB的gzip文件。我已经用gzip提取了它,但提取后它甚至无法容纳60GB的存储空间。所以,如果我不能提取哪个是JSON,那么我就不能以字节为单位读取。我发现了很多问题——所有这些都是下载的,然后提取成字节,然后读取成字节,但在这里我甚至无法提取它们。

    那么,如果可以在下载时以字节为单位进行读取呢?我试过了,但错误显示需要下载整个文件。

    正在下载代码:

    default_path_download = '.'
    def saveanddelete(download_url, name):
      with requests.get(download_url, headers=headersfordowlnoading, stream=True) as r:
          content_lenght = int(r.headers['Content-Length'])
          print(f"Download File Size : {round(content_lenght/1000000, 5)} MB")
          r.raise_for_status()
          with open(f"{default_path_download}/{name}", 'wb') as f:
              total_chunk_downloaded = 0
              chunk_size_to_get = 4096
              for chunk in r.iter_content(chunk_size=chunk_size_to_get):
                  total_chunk_downloaded += len(chunk)
                  if chunk:
                      f.write(chunk)
                      done = int(50 * total_chunk_downloaded / content_lenght)
                      print(f"Downloaded :  ", end='',flush=True)
                      print(f"{round(total_chunk_downloaded/1000000, 5)} MB [{'=' * done}{' ' * (50-done)}]\r", end='', flush=True)
                      break
              print("\n")
              print("Download Complete")
    

    你可以在上看到整个代码 colab 如果可能的话,我想用其他方法吗? 谢谢你的帮助!

    0 回复  |  直到 4 年前
    推荐文章