Python Requests ଏବଂ csv.reader ସହିତ ବହୁ-ଧାଡ଼ି CSV ରେକର୍ଡ ଷ୍ଟ୍ରିମ କରନ୍ତୁ
ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ଆସୁଥିବା ପ୍ରତିକ୍ରିୟାକୁ csv.reader କୁ ଷ୍ଟ୍ରିମ କରନ୍ତୁ ଏବଂ ପ୍ରତ୍ୟେକ ଭୌତିକ ଧାଡ଼ିକୁ ଡେଲିମିଟରରେ ବିଭାଜନ କରିବା ପରିବର୍ତ୍ତେ ରେକର୍ଡର ସୀମା ରକ୍ଷା କରନ୍ତୁ।
stream=True ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ଆସୁଥିବା ପ୍ରତିକ୍ରିୟାର ବଡି ସମ୍ପୂର୍ଣ୍ଣ ଡାଉନଲୋଡ ହେବା ପୂର୍ବରୁ ପ୍ରକ୍ରିୟାକରଣ ଆରମ୍ଭ କରିବାକୁ ଦେଇଥାଏ। CSV ପାଇଁ csv.reader କୁ ଏକ ଟେକ୍ସଟ-ଧାଡ଼ି ଇଟରେଟର ଦିଅନ୍ତୁ, ଯାହାଫଳରେ ଉଦ୍ଧୃତି ଚିହ୍ନ ଭିତରର ଡେଲିମିଟର ଏବଂ ବହୁ-ଧାଡ଼ି ରେକର୍ଡ CSV ତଥ୍ୟ ଭାବରେ ରହିବ।
ଅର୍ଦ୍ଧ-ବିରାମ ବ୍ୟବହାର କରୁଥିବା ଏକ ଉଦାହରଣ UTF-8 ଫାଇଲ ପାଇଁ:
import csv
import requests
routes = {'https': 'http://proxy.example:8080'}
with requests.get(
'https://data.example/observations.csv',
proxies=routes,
stream=True,
timeout=(5, 30),
) as response:
response.raise_for_status()
response.encoding = 'utf-8'
lines = (
line + '\n'
for line in response.iter_lines(
chunk_size=65536, decode_unicode=True)
)
for record in csv.reader(lines, delimiter=';'):
if record and record[0] == 'wanted':
print(record)
break
ଫାଇଲର ପ୍ରକୃତ ଏନକୋଡିଂ ଏବଂ ଡାୟାଲେକ୍ଟ ଚୟନ କରନ୍ତୁ। ଅନୁମତିପ୍ରାପ୍ତ ସାର୍ବଜନୀନ-ପ୍ରକ୍ସି ପଥରେ ସାର୍ବଜନୀନ CSV ଡାଉନଲୋଡ ପାଇଁ, HTTP ପ୍ରକ୍ସି ତାଲିକା routes URL ପାଇଁ ପ୍ରାର୍ଥୀ ଯୋଗାଏ। ଏହି ସଂସ୍କରଣ ଭୌତିକ ଧାଡ଼ି-ଶେଷକୁ LF କୁ ସାଧାରଣୀକରଣ କରେ: iter_lines ସେଗୁଡ଼ିକୁ ହଟାଏ, ଏବଂ ଜେନେରେଟର CSV ପାର୍ସର ପାଇଁ ନୂଆ ଧାଡ଼ି ପୁଣି ଯୋଡ଼େ। ଉଦ୍ଧୃତି ଭିତରର କ୍ଷେତ୍ର ଅନ୍ୟ ଭୌତିକ ଧାଡ଼କୁ ଜାରି ରହିଲେ ଏହା ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ।
ଏମ୍ବେଡ ହୋଇଥିବା CRLF ଅକ୍ଷରର ବାଇଟ-ନିଖୁତ ସଂରକ୍ଷଣ ଆବଶ୍ୟକ କରୁଥିବା ୱାର୍କଫ୍ଲୋ ପାଇଁ, ସେହି ଧାଡ଼ି-ଶେଷ ରକ୍ଷା କରୁଥିବା ଏକ ଷ୍ଟ୍ରିମିଂ ଟେକ୍ସଟ-ରାପର ବ୍ୟବସ୍ଥା ବ୍ୟବହାର କରନ୍ତୁ। ଉଦାହରଣର ଉଦ୍ଦେଶ୍ୟପୂର୍ଣ୍ଣ ସାଧାରଣୀକରଣ ରେକର୍ଡ-କେନ୍ଦ୍ରିତ ପ୍ରକ୍ରିୟାକରଣ ପାଇଁ ଉପଯୁକ୍ତ ଯେଉଁଠି LF ହେଉଛି ଅଭୀଷ୍ଟ ଉପସ୍ଥାପନା।
ଏକ ପ୍ରତିକ୍ରିୟା, ଅନେକ ପଠନ
ଇଟରେଟର ଏକ HTTP ପ୍ରତିକ୍ରିୟାରୁ ଖଣ୍ଡ ଗ୍ରହଣ କରେ। ଏହା ପ୍ରତ୍ୟେକ ଧାଡ଼ି ପାଇଁ ନୂଆ ଅନୁରୋଧ ପଠାଏ ନାହିଁ। HTTP Range ଅନୁରୋଧ ଏକ ଭିନ୍ନ ପ୍ରଣାଳୀ ଏବଂ ସେମାନେ ସ୍ୱାଭାବିକ ଭାବରେ CSV ରେକର୍ଡର ସୀମା ଚିହ୍ନଟ କରନ୍ତି ନାହିଁ।
response.text ଡାକିବା କିମ୍ବା ସମସ୍ତ ଧାଡ଼ିକୁ ଏକ ତାଲିକାରେ ସଂଗ୍ରହ କରିବା ସମ୍ପୂର୍ଣ୍ଣ ବିଷୟବସ୍ତୁକୁ ପୁଣି ମେମୋରୀକୁ ଆଣିବ। ଷ୍ଟ୍ରିମିଂ ତଥାପି ପରିବହନ ବଫର ଏବଂ ବର୍ତ୍ତମାନ ରେକର୍ଡ ପାଇଁ ସ୍ଥାନ ଆବଶ୍ୟକ କରେ, ଯାହା ନିଜେ ଏକ ବଡ଼ କ୍ଷେତ୍ର ଧାରଣ କରିପାରେ।
ପ୍ରତିକ୍ରିୟା ସନ୍ଦର୍ଭ ଲୁପରୁ ବାହାରିବା ସମୟରେ ବଡି ବନ୍ଦ କରେ, ଆଗୁଆ ମେଳ ଖାଇଲେ ମଧ୍ୟ। ପଠନ ସମୟସୀମା ଆସୁଥିବା ତଥ୍ୟ ପାଇଁ ଅପେକ୍ଷାକୁ ସୀମିତ କରେ, ଏକ ବଡ଼ ଫାଇଲ ସ୍ଥାନାନ୍ତରର ସମୁଦାୟ ଆୟୁକୁ ନୁହେଁ।