In questo articolo vedremo come effettuare il download di un file salvandolo con shutil in Python.

Possiamo usare lo stream di dati del modulo requests in una richiesta GET e passare tali dati grezzi al metodo copyfileobj() che effettuerà la scrittura del file di destinazione nel percorso specificato dal gestore file.


import shutil
import requests

def download(file_url, target_path):
    try:
        res = requests.get(file_url, stream=True, allow_redirects=True)
        with open(f'{target_path}', 'wb') as f:
            shutil.copyfileobj(res.raw, f)
            return True
    except requests.exceptions.RequestException:
        return False

La nostra funzione di download restituirà un valore booleano che indicherà l'esito dell'operazione. Volendo migliorare il nostro codice, potremmo restituiire una tuple o None inserendo nella prima il flag booleano e il percorso del file scaricato.