import os
import shutil
from urllib.request import ProxyHandler, build_opener

proxy = 'http://proxy.example.net:8080'
opener = build_opener(ProxyHandler({
    'http': proxy,
    'https': proxy,
}))

temporary = 'archive.zip.part'
destination = 'archive.zip'

with opener.open('https://downloads.example.net/archive.zip',
                 timeout=20) as response:
    with open(temporary, 'wb') as output:
        shutil.copyfileobj(response, output)

os.replace(temporary, destination)

Zëvendësoni URL-të dhe emrat e skedarëve me ato të aplikacionit. Për një shkarkim të lejuar të një skedari publik pa vërtetim proksi, lista e proksive HTTP mund të sigurojë pika fundore kandidate për URL-në e proksit. Ky hapës urllib i dedikuar përdor një proksi HTTP për një destinacion HTTPS me verifikimin normal të certifikatës. Nuk instalon një hapës global; vërtetimi, nëse nevojitet, kërkon konfigurimin e tij të mbështetur.

copyfileobj kopjon në pjesë. Dalja nga konteksti i skedarit e mbyll atë dhe shkarkon shkrimet e buferizuara përpara se os.replace të vendosë emrin përfundimtar.

Nëse kërkesa ose kopjimi hedh një gabim, riemërtimi anashkalohet. Një skedar i pjesshëm mund të mbetet për politikën e pastrimit, dhe ky rrjedhë lë të paprekur një skedar përfundimtar ekzistues në atë dështim. Në rast suksesi, zëvendësimi mund të mbishkruajë atë skedar përfundimtar, prandaj zgjidhni politikën me qëllim.

Përdorni emra të përkohshëm unikë për punët e njëkohshme. Objektet e hapësit të veçuar nuk mbrojnë punët që ndajnë të njëjtën shteg .part.

Cilësimi prej 20 sekondash kufizon operacionet e mbështetura të soketit, jo kohën totale të shkarkimit. Një afat për të gjithë punën kërkon trajtim të veçantë në aplikacion. Përfundimi i transferimit është gjithashtu i ndarë nga verifikimi i skedarit të shkarkuar.

Artikuj të ngjashëm