下载zip文件并使用Python3将其解压缩到内存中

时间:2014-05-02 01:19:08

标签: python python-3.x python-3.3 python-requests

我想从互联网上下载一个zip文件并将其解压缩。

我宁愿使用请求。我不想写入磁盘。

我知道如何在Python2中做到这一点,但我对python3.3毫无头绪。显然,zipfile.Zipfile需要一个类似文件的对象,但我不知道如何从请求返回的内容中获取它。

如果您知道如何使用urllib.request,我很想知道您是如何做到的。

3 个答案:

答案 0 :(得分:31)

我发现了怎么做:

request = requests.get(url)
file = zipfile.ZipFile(BytesIO(request.content))

我缺少什么:

  • request.content应该用于访问字节
  • io.BytesIObytes的正确文件对象。

答案 1 :(得分:5)

使用请求,这可以非常简单地完成。

import requests, zipfile, StringIO
response = requests.get(zip_file_url)
zipDocument = zipfile.ZipFile(StringIO.StringIO(response.content))

使用String.IO,您可以为响应内容属性创建类似文件的对象。

如果要提取到目录,可以使用ZipFile的extractall()函数

zipDocment.extractall()

答案 2 :(得分:5)

这是另一种节省您必须安装请求的方法:

    r = urllib.request.urlopen(req)
    with zipfile.ZipFile(BytesIO(r.read())) as z:
        print( z.namelist() )