Requests ist eine wirklich schöne Bibliothek. Ich möchte es zum Herunterladen großer Dateien (> 1 GB) verwenden. Das Problem ist, dass es nicht möglich ist, die gesamte Datei im Speicher zu halten. Ich muss sie in Blöcken lesen. Und dies ist ein Problem mit dem folgenden Code
import requests
def DownloadFile(url)
local_filename = url.split('/')[-1]
r = requests.get(url)
f = open(local_filename, 'wb')
for chunk in r.iter_content(chunk_size=512 * 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.close()
return
Aus irgendeinem Grund funktioniert es nicht so. Die Antwort wird weiterhin in den Speicher geladen, bevor sie in einer Datei gespeichert wird.
AKTUALISIEREN
Wenn Sie einen kleinen Client (Python 2.x / 3.x) benötigen, der große Dateien von FTP herunterladen kann, finden Sie ihn hier . Es unterstützt Multithreading und erneutes Verbinden (es überwacht Verbindungen) und optimiert Socket-Parameter für die Download-Aufgabe.