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ని పిలవడం లేదా అన్ని వరుసలను జాబితాలో సేకరించడం మొత్తం కంటెంట్‌ను తిరిగి మెమరీకి తెస్తుంది. స్ట్రీమింగ్‌కు ఇప్పటికీ రవాణా బఫర్లు మరియు ప్రస్తుత రికార్డు కోసం స్థలం అవసరం, అది స్వయంగా పెద్ద ఫీల్డ్‌ను కలిగి ఉండవచ్చు.

ప్రతిస్పందన సందర్భం లూప్ నుండి బయటపడినప్పుడు బాడీని మూసివేస్తుంది, ముందస్తు సరిపోలికలో కూడా. పఠన సమయ పరిమితి వచ్చే డేటా కోసం వేచి ఉండటాన్ని పరిమితం చేస్తుంది, పెద్ద ఫైల్ బదిలీ మొత్తం ఆయుష్షును కాదు.

సంబంధిత వ్యాసాలు