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 ସେକେଣ୍ଡ ସେଟିଂ ସମୁଦାୟ ଡାଉନଲୋଡ୍ ସମୟ ନୁହେଁ, ବରଂ ସମର୍ଥିତ ସକେଟ କାର୍ଯ୍ୟକଳାପକୁ ସୀମିତ କରେ। ସମଗ୍ର କାର୍ଯ୍ୟର ସମୟସୀମା ପାଇଁ ଆପ୍ଲିକେସନରେ ପୃଥକ ପରିଚାଳନା ଆବଶ୍ୟକ। ସ୍ଥାନାନ୍ତର ସମ୍ପୂର୍ଣ୍ଣ ହେବା ମଧ୍ୟ ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଫାଇଲ ଯାଞ୍ଚରୁ ପୃଥକ।