Python urllib மூலம் ப்ராக்ஸி பதிவிறக்கத்தை கோப்புக்கு ஸ்ட்ரீம் செய்யுங்கள்
ப்ராக்ஸி பதிவிறக்கத்தை தற்காலிக கோப்புக்கு ஸ்ட்ரீம் செய்து, நகல் முடிந்த பிறகு மட்டும் இறுதி கோப்புப்பெயரை வெளியிடுங்கள்.
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 வினாடி அமைப்பு மொத்த பதிவிறக்க நேரத்தையல்ல, ஆதரவு பெற்ற சாக்கெட் செயல்பாடுகளை வரம்பிடுகிறது. முழு வேலைக்கான காலக்கெடுவுக்கு பயன்பாட்டில் தனி கையாளுதல் தேவை. பரிமாற்றம் நிறைவடைவதும் பதிவிறக்கப்பட்ட கோப்பைச் சரிபார்ப்பதில் இருந்து தனியாகும்.