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)

Ibdel l-URLs u l-ismijiet tal-fajls għall-applikazzjoni. Għal tniżżil permess ta' fajl pubbliku mingħajr awtentikazzjoni tal-proksi, il-lista tal-proksis HTTP tista' tipprovdi punti finali kandidati għall-URL tal-proksi. Dan il-ftuħ urllib iddedikat juża proksi HTTP għal destinazzjoni HTTPS b'verifika normali taċ-ċertifikat. Ma jinstallax ftuħ globali; l-awtentikazzjoni, jekk meħtieġa, teħtieġ is-setup appoġġat tiegħu.

copyfileobj jikkopja f'biċċiet. Il-ħruġ mill-kuntest tal-fajl jagħlqu u jbattal il-kitbiet buffered qabel os.replace jistabbilixxi l-isem finali.

Jekk it-talba jew il-kopja tqajjem żball, l-isem mill-ġdid jinħaqad. Fajl parzjali jista' jibqa' għall-politika tat-tindif, u dan il-fluss iħalli fajl finali eżistenti mhux mittiefes f'dak il-falliment. Jekk jirnexxi, is-sostituzzjoni tista' tikteb fuq dak il-fajl finali, għalhekk agħżel il-politika b'mod deliberat.

Uża ismijiet temporanji uniċi għal xogħlijiet konkorrenti. Oġġetti tal-ftuħ separati ma jipproteġux xogħlijiet li jaqsmu l-istess mogħdija .part.

Is-setting ta' 20 sekonda jillimita l-operazzjonijiet tas-socket appoġġati, mhux il-ħin totali tat-tniżżil. Skadenza għax-xogħol kollu teħtieġ immaniġġjar separat fl-applikazzjoni. It-tlestija tat-trasferiment hija wkoll separata mill-verifika tal-fajl imniżżel.

Artikli relatati