1

大きなファイルをダウンロードするには、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まで応答から (ヘッダーを除く) 何もメモリに取り込まないでください。

4

1 に答える 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))
于 2013-02-21T00:42:58.730 に答える