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 کو کال کرنا یا تمام قطاریں فہرست میں جمع کرنا پوری مواد کو دوبارہ میموری میں لے آئے گا۔ اسٹریمنگ کو پھر بھی ٹرانسپورٹ بفرز اور موجودہ ریکارڈ کے لیے جگہ درکار ہے، جس میں خود بھی بڑا فیلڈ ہو سکتا ہے۔
جواب کا سیاق و سباق لوپ سے نکلتے وقت باڈی بند کر دیتا ہے، بشمول جلد مطابقت۔ پڑھنے کی مہلت آنے والے ڈیٹا کے انتظار کو محدود کرتی ہے، کسی بڑی فائل کی منتقلی کی کل عمر کو نہیں۔