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 ඇමතීම හෝ සියලු පේළි ලැයිස්තුවකට එකතු කිරීම සම්පූර්ණ අන්තර්ගතය නැවත මතකයට ගෙන එනු ඇත. ප්රවාහනයට තවමත් ප්රවාහන බෆර සහ වත්මන් වාර්තාව සඳහා ඉඩ අවශ්ය වන අතර, එයම විශාල ක්ෂේත්රයක් අඩංගු විය හැක.
ප්රතිචාර සන්දර්භය ලූපයෙන් පිටවන විට පබළු වසා දමයි, මුල් ගැළපීමකදී ද එසේමය. කියවීම් කාල සීමාව එන දත්ත සඳහා බලා සිටීම සීමා කරයි, විශාල ගොනු මාරු කිරීමක සම්පූර්ණ ආයු කාලය නොවේ.