Python: come scaricare un file tramite HTTP

di Lorenzo Neri
Published: Last Updated on

Come si può scaricare un file tramite HTTP nei tuoi script Python? In questa guida pratica ti spiego come farlo in pochi passaggi usando la libreria requests.

Ciao! Mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica.

Scaricare un file in Python tramite HTTP è davvero semplice e immediato. Ti basta solo una libreria: requests.

Scaricare file in Python via HTTP: la libreria requests

Quando si lavora con il protocollo HTTP, che si tratti di API REST o di scaricare file, Python ci viene incontro con il pacchetto requests, che semplifica enormemente le richieste GET o POST.

Nel caso del download, ti basterà una semplice richiesta GET per scaricare il file desiderato.

Come scaricare un file HTTP in Python

Partiamo dal primo punto, ovvero il minimo essenziale che ci serve per scaricare un file tramite HTTP:

# importo il pacchetto
import requests
# scrivo l'url del mio file
url = "https://ilmiositoweb.com/files/nome_del_file.zip

Questo esempio usa un file .zip, ma può essere qualsiasi file (PDF, immagine, CSV…).

A questo punto, eseguo una richiesta GET in questo modo:

risultato = requests.get(url)

La variabile “risultato” quindi, conterrà tutto ciò che riguarda la richiesta fatta al server: incluso il file che vuoi scaricare!

Status code e content: cosa ti interessa per scaricare un file in Python

Per capire se il download è riuscito, ti servono due attributi:

  • status_code: seguendo le linee guida dei codici HTTP, è il codice con cui ci risponde il server: sperando che non sia un errore “Sono una teiera”!
  • content: contiene i byte del file

Un status_code pari a 200 significa che tutto è andato a buon fine.

Di per se il download l’abbiamo già fatto! Si tratta di salvare il file in locale!

Come?

Così:

# importo il pacchetto
import requests
# scrivo l'url del mio file
url = "https://ilmiositoweb.com/files/nome_del_file.zip
# eseguo la richiesta
risultato = requests.get(url)
# stampo a video lo status code
print(risultato.status_code)
if risultato.status_code == 200:
   print("Download riuscito")
   # salvo in locale i contenuti del file
   file_locale = open("nome_del_file.zip","wb")
   file_locale.write(risultato.content)
   file_locale.close()
else:
   print("Non posso proseguire con il download")

Nota: usiamo il flag "wb" perché stiamo scrivendo byte, non testo. Questo è fondamentale per evitare errori nel salvataggio di file binari.

Ora sai come scaricare un file HTTP in Python usando la libreria requests.
Ti basteranno poche righe di codice per automatizzare il download di file da qualsiasi URL.

Hai altri dubbi su Python o vuoi approfondire le richieste HTTP? Scrivimi o dai un’occhiata agli altri articoli della categoria! Il che significa che non bisogna leggere le righe del file, al contrario bisogna leggerne appunto i bytes.

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più