Streyma eina proxy-niðurhaling til eina fílu við Python urllib
Streyma eina proxy-niðurhaling til eina fyribilsfílu og kunngerð endaliga fílunavnið fyrst eftir at avritið er liðugt.
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)Skift út URL-arnar og fílunøvnini fyri tí, sum applikatiónin brúkar. Fyri eina loyvda niðurhaling av eini almenningarfílu uttan proxy-sannleikan, kann HTTP-proxy-listin veita møgulig endapunkty fyri proxy-URL-ina. Hesin serstaka urllib-opnararnýtir ein HTTP-proxy til eina HTTPS-destinatión við vanligari váttanarkontroll. Hann setur ikki ein globalan opnara upp; sannleikan krevur, um neyðugt, hansara stuðlaðu uppsetningu.
copyfileobj avritar í pettum. Tá fílusamhengið verður læst, verður fílan latín og bufferraðar skrivingar tømdar, áðrenn os.replace setur endaliga navnið.
Um umbønin ella avritið reisir eina villu, verður endurnevingin slept. Ein partfíla kann verða eftir fyri ruddningspolitikkina, og hesin floymur letur eina verandi endaliga fílu vera órørd við tí fiaskoinum. Við eydnu kann avloysingin yvirskriva ta endaligu fíluna, so vel politikkina við vilja.
Brúka einastandandi fyribilsnøvn fyri samstundis arbeiði. Aðskildir opnara-objektir verja ikki arbeiði, sum deila sama .part-leidin.
Stillingin á 20 sekundum avmarkar stuðlaðar socket-handlingar, ikki samlaða niðurhalingstíð. Ein freist fyri alt arbeiðið krevur serstaka viðgerð í applikatiónini. Liðugtøkan av flutninginum er eisini aðskild frá sannleikanini av niðurhalaðu fíluni.