有没有库可以以文件方式读取HTTP响应?

1 投票
1 回答
1777 浏览
提问于 2025-04-17 16:34

我需要用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方法时从源头读取数据,而不是在内存中提前加载响应的内容(除了头信息)直到我需要它。

1 个回答

3

没错。你可以看看这个Requests

你可以使用stream选项,这样在你真正需要获取响应内容之前,它不会自动下载这些内容:

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))

撰写回答