stream=True erlaabt et, d'Veraarbechtung unzefänken, ier de Kierper vun enger Äntwert duerch e Proxy komplett erofgelueden ass. Fir CSV gëff en Textlinnen-Iterator un den csv.reader, sou datt Trennzeechen tëschent Anféierungszeechen a méi-linnegt Datensätz CSV-Daten bleiwen.

Fir eng illustrativ UTF-8-Datei mat Semikolonen:

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

Wielt déi tatsächlech Kodéierung an den Dialekt vun der Datei. Fir en ëffentlechen CSV-Download iwwer eng erlaabt ëffentlech Proxy-Route bitt d'HTTP-Proxy-Lëscht Kandidaten fir d'routes-URL. Dës Versioun normaliséiert physesch Linnenennungen op LF: den iter_lines hëlt se ewech, an de Generator füügt eng nei Linn fir de CSV-Parser dobäi. Dat ass wichteg, wa e Feld tëschent Anféierungszeechen op enger anerer physescher Linn weidergeet.

Fir Workflows, déi eng bytesgenee Erhalung vun den agebauten CRLF-Zeeche verlaangen, benotz eng streamend Textëmhüllung, déi déi Linnenennungen erhalen. Déi bewosst Normaliséierung aus dem Beispill passt fir eng datensazorientéiert Veraarbechtung, wou LF déi gewënscht Duerstellung ass.

Eng Äntwert, vill Liesungen

Den Iterator verbraucht Stécker aus enger eenzeger HTTP-Äntwert. Hie schéckt keng nei Ufro fir all Linn. HTTP-Range-Ufroe sinn en anere Mechanismus a si identifizéieren net vun sech aus d'Grenze vun CSV-Datensätz.

Den response.text opzefruffen oder all Zeilen an enger Lëscht ze sammelen, géif den ganze Contenu zréck an de Späicher bréngen. Beim Streamen brauch een nach ëmmer Plaz fir Transportpuffer an den aktuelle Datensaz, dee selwer en grousst Feld ka enthalen.

Den Äntwertkontext schléisst de Kierper, wann d'Schleif verlooss gëtt, och bei engem fréien Treffer. Den Lies-Timeout begrenzt d'Warte op erakommend Daten, net d'Gesamtliewensdauer vun engem groussen Dateitransfer.

Ähnlech Artikelen