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)

అప్లికేషన్ కోసం URLలు మరియు ఫైల్‌పేర్లను మార్చండి. ప్రాక్సీ ప్రామాణీకరణ లేకుండా అనుమతించబడిన పబ్లిక్ ఫైల్ డౌన్‌లోడ్ కోసం, HTTP ప్రాక్సీ జాబితా ప్రాక్సీ URL కోసం సాధ్యమయ్యే ఎండ్‌పాయింట్‌లను అందించగలదు. ఈ ప్రత్యేక urllib ఓపెనర్ సాధారణ సర్టిఫికెట్ ధృవీకరణతో HTTPS గమ్యానికి HTTP ప్రాక్సీని ఉపయోగిస్తుంది. ఇది గ్లోబల్ ఓపెనర్‌ను ఇన్‌స్టాల్ చేయదు; అవసరమైతే ప్రామాణీకరణకు దాని మద్దతు ఉన్న సెటప్ కావాలి.

copyfileobj ముక్కలుగా కాపీ చేస్తుంది. ఫైల్ సందర్భం నుండి బయటకు రావడం దాన్ని మూసివేసి, os.replace తుది పేరును ఏర్పాటు చేయడానికి ముందు బఫర్ చేసిన రచనలను ఫ్లష్ చేస్తుంది.

అభ్యర్థన లేదా కాపీ లోపాన్ని లేపితే, పేరు మార్పు దాటవేయబడుతుంది. శుభ్రపరిచే విధానం కోసం పాక్షిక ఫైల్ మిగిలి ఉండవచ్చు, మరియు ఈ ప్రవాహం ఆ వైఫల్యంలో ఉన్న తుది ఫైల్‌ను తాకకుండా వదిలివేస్తుంది. విజయవంతమైతే భర్తీ ఆ తుది ఫైల్‌ను పైన రాయగలదు, కాబట్టి విధానాన్ని ఉద్దేశపూర్వకంగా ఎంచుకోండి.

ఏకకాల పనుల కోసం ప్రత్యేక తాత్కాలిక పేర్లను ఉపయోగించండి. వేర్వేరు ఓపెనర్ వస్తువులు ఒకే .part మార్గాన్ని పంచుకునే పనులను రక్షించవు.

20 సెకన్ల సెట్టింగ్ మొత్తం డౌన్‌లోడ్ సమయాన్ని కాదు, మద్దతు ఉన్న సాకెట్ కార్యకలాపాలను పరిమితం చేస్తుంది. మొత్తం పని గడువుకు అప్లికేషన్‌లో ప్రత్యేక నిర్వహణ కావాలి. బదిలీ పూర్తవడం కూడా డౌన్‌లోడ్ చేసిన ఫైల్ ధృవీకరణ నుండి వేరు.

సంబంధిత వ్యాసాలు