如何使用http.client在请求中获取文件后保存文件

时间:2017-04-19 13:43:55

标签: python-3.x http.client

我想这是一个愚蠢的问题,但我试图在谷歌搜索回答,这里没有运气。

所以我使用带有http.client包的Get请求连接到API。

将get请求发送到带有ziped文件的地址。发送请求没问题,我得到一个返回的对象。我接下来要做的就是将返回的文件保存到文件夹中。

我试过查看http.client文档,并找到了关于它的任何内容。

这是代码如何显示的示例。出于隐私原因,我不得不删除部分内容

Your local folder is in sync with master and no changelist detected

代码运行正常,但我的问题是下一步该怎么做。如果返回的数据只是一个普通的json文件,我会做类似的事情:

conn = http.client.HTTPConnection("Adress to the server")

headers = {
    'cache-control': "no-cache",
    }

conn.request("GET", path_to_file + "?authTicket=" + ticket, 
headers=headers)

res = conn.getresponse()

return res

然后能够在脚本中使用它。但我不知道如何处理返回的ziped文件。我希望在保存之前解压缩它,但作为一个开始,只需将其保存到文件即可。

希望有人有一个简单的解决方案。

我确实看了一下,当在返回的对象上使用getheaders()时,我得到了这个:

data = res.read()
data = data.decode("uft-8")

我不确定这是否相关,但我想我现在需要一种下载附件的方法。

1 个答案:

答案 0 :(得分:0)

您可以在Python中轻松提取zip文件:

import requests
from zipfile import ZipFile
import io

my_request = requests.get(URL)
ficheiro = ZipFile(io.BytesIO(my_request.content))

ficheiro.extract('file_name')

您可以在此处获取有关zipfile模块和zipfile.ZipFile课程的更多信息:

https://docs.python.org/3/library/zipfile.html