我想这是一个愚蠢的问题,但我试图搜索谷歌上的答案和这里没有运气。如何在使用http.client请求获取文件后保存文件
所以我通过http.client包使用Get请求连接到API。
获取请求被发送到带有ziped文件的地址。发送请求可以,我得到一个返回的对象。接下来我要做的就是将返回的文件保存到一个文件夹中。
我试着在http.client文档中查找关于它的任何内容。
这是一个代码样子的例子。我不得不删除它的一些出于隐私的原因
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
代码运行正常,但我的问题是接下来要做的事。如果返回的数据只是一个普通的json文件,我只会这样做:
data = res.read()
data = data.decode("uft-8")
然后能够在脚本中使用它。但我不知道如何处理返回的ziped文件。我希望在保存之前将其解压缩,但作为开始,可以将其保存到文件中。
希望有人对此有一个简单的解决方案。
我确实看起来有点更加进去,并使用getheaders()返回的对象上,当我得到这个:
[('Date', 'Wed, 19 Apr 2017 13:48:41 GMT'),
('Content-Type', 'application/octet-stream; charset=UTF-8'),
('Content-Disposition', 'attachment;filename=filename.csv.gz'),
('Content-Length', '2117014'),
('Server', 'Jetty(9.2.17.v20160517)')]
林不知道,如果是相关的,但我想我现在需要一种下载附件的方式。
您可以在行动中看到这,例如,在我的项目PT-Tracking for iPhone/Pythonista中,iPhone获取一个用于查看和/或进一步离线处理的sqlite数据库的压缩子集:https://github.com/victordomingos/PT-Tracking/tree /主/ ctt_tr acking_i电话 –
好的,所以它似乎应该可以提取文件,但是你有关于如何从返回的对象获取文件的任何提示?在您的示例代码中,您只需将URL传递给请求包。如何访问文件名= filename.csv.gz – Siesta
只要它不是一个巨大的文件,并且它适合计算机RAM,则可以在收到文件后直接从内存中提取文件。但打开先前保存的zip或gzip文件进行提取也很简单。请参阅:https://docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.open –