Requests est une bibliothèque vraiment sympa. Je voudrais l'utiliser pour télécharger de gros fichiers (> 1 Go). Le problème est qu'il n'est pas possible de conserver le fichier entier en mémoire, j'ai besoin de le lire en morceaux. Et c'est un problème avec le code suivant
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
Pour une raison quelconque, cela ne fonctionne pas de cette façon. Il charge toujours la réponse en mémoire avant de l'enregistrer dans un fichier.
MISE À JOUR
Si vous avez besoin d'un petit client (Python 2.x /3.x) qui peut télécharger de gros fichiers depuis FTP, vous pouvez le trouver ici . Il prend en charge le multithreading et les reconnexions (il surveille les connexions) et ajuste les paramètres de socket pour la tâche de téléchargement.