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