我需要用Python发出一个HTTP请求来下载一个大文件,但是我需要能够使用类似文件的指针读回响应的块,有点像这个伪代码:
request = HTTPRequest(GET, "http://localhost/bigfile.bin")
request.send()
response = request.get_response()
print "File is {} bytes long.".format(response.content_length)
while True:
chunk = response.read(1024)
print "Chunk Length: {}".format(len(chunk))
有这样的API吗?我只想在调用read
方法时从源读取,而不是从响应(除标题之外)将任何内容带入内存,直到我想要它。
答案 0 :(得分:3)
是。查看Requests
package。
您可以使用stream
option来避免获取响应正文,直到您访问它:
req = requests.get('http://localhost/bigfile.bin', stream=True)
print "File is {} bytes long.".format(req.headers['Content-Length'])
while True:
chunk = req.raw.read(1024)
print "Chunk Length: {}".format(len(chunk))