Python ber om nedlastingsfil

Python ber om nedlastingsfil

“Python Requests Library er et av de mest allsidige og verdifulle bibliotekene i Python -økosystemet. Dens funksjoner og utrolig enkelhet gjør det verdt å drive mange Python -applikasjoner.”

Denne opplæringen vil lære oss hvordan du laster ned en fil fra en gitt URL ved hjelp av forespørselspakken.

Installasjon og oppsett

Før du bruker forespørselsmetoden, må du sørge for at den er installert i miljøet ditt. Du kan gjøre dette ved å kjøre PIP -kommandoen som vist:

$ sudo pip installer forespørsler


eller

$ sudo pip3 installer forespørsler


På Windows kan du kjøre kommandoen:

$ python -m pip installer forespørsler


Hvis du har Conda installert, kjør kommandoen:

conda install -c anaconda forespørsler

Eksempel 1 - Last ned en enkel fil

Vi kan laste ned en fil ved hjelp av forespørselsmodulen ved å spesifisere nettadressen til filen og bruke Python -filmodulen for å skrive innholdet til et gitt filnavn.

Et eksempel på illustrasjonen er vist nedenfor:

$ Touch ~/download_image.py


Rediger filen og legg til koden:

$ vim ~/download_image.py
Importer forespørsler
url = 'https: // opplasting.Wikimedia.org/wikipedia/commons/a/af/tux.png '
r = forespørsler.Get (URL, tillat_Redirects = True)
med åpen ('tux.png ',' wb ') som f:
f.forfatter.innhold)


I koden over begynner vi med å importere forespørselsmodulen. Vi oppretter deretter en variabel som holder nettadressen til filen vi ønsker å laste ned. I dette tilfellet ønsker vi å laste ned et bilde.

I den tredje linjen oppretter vi et HTTP -svarobjekt og gir en forespørsel til den spesifiserte URL -en. Vi setter også tillatelses_redirektene til True for å la klienten følge viderekoblinger (hvis noen). Responsobjektet lagres deretter i variabelen som heter r.

Til slutt, lagre det mottatte objektet i en fil som tux.PNG i binær modus.

Du kan deretter sjekke katalogen der skriptet ligger for tuxen.PNG -fil.

Eksempel 2 - Last ned store filer

I eksemplet ovenfor bruker vi r.innholdsfunc, som lagrer filen som en streng. Dette er praktisk når du laster ned små filer. Når du laster ned store filer, vil ikke funksjonen ikke håndtere å skrive de forespurte dataene på en gang.

For å løse dette, må vi laste ned filen som strømmer. Derfor kan vi bruke r.ITER_Content -funksjonen og sett strømparameteren til True.

Dette er fordi bruk av r.Innhold () Funksjon med strømparameter til True vil bare holde tilkoblingen og responsen åpen og ikke lese den spesifiserte filen.

R.ITER_Content -funksjonen lar oss løse dette.

Et eksempel er som vist:

Importer forespørsler
url = "https: // hastie.su.Domener/Islr2/Islrv2_website.PDF "
r = forespørsler.Get (URL, tillat_Redirects = True, Stream = True)
med åpen ('Islrv2.pdf ',' wb ') som fil:
for chunk i r.iter_content (chunk_size = 1024):
Hvis chunk:
fil.Skriv (Chunk)


Koden over bruker en for loop for å skrive databiter (1024 byte hver) til den spesifiserte filen.

Eksempel 3 - Kontroller filtype før nedlasting

Vi kan sjekke hvilken type innhold som mottas fra overskriftene. Vi kan deretter bruke denne verdien til å sjekke om filen vi ønsker å laste ned er riktig.

Hvis vi for eksempel ønsker å laste ned en ISO -fil og motta HTML eller teksttype, vet vi at dette er en feil fil og lukker tilkoblingen.

Et eksempelkode er som vist:

Importer forespørsler
url = "https: // cdimage.Debian.ORG/Debian-CD/Current/AMD64/ISO-DVD/Debian-11.4.0-AMD64-DVD-1.ISO "
r = forespørsler.Get (URL, tillat_Redirects = True, Stream = True)
H = forespørsler.Hode (URL, tillat_Redirects = True)
header = h.overskrifter
innhold_type = header.få ('innholdstype')
hvis 'html' i innhold_type.Nedre():
r.Lukk()
Print ("Feil filtype")
Hvis 'tekst' i content_type ().Nedre():
r.Lukk()
Print ("Feil filtype")
ellers:
med åpen ('Islrv2.ISO ',' WB ') som fil:
for chunk i r.iter_content (chunk_size = 1024):
Hvis chunk:
fil.Skriv (Chunk)

Lukking

Du lærte hvordan du laster ned en fil ved hjelp av Python Requests -modulen i denne artikkelen. Du lærte også hvordan du laster ned store filer.

Takk for at du leste!!