stream=True lubab töötlemist alustada enne, kui puhverserveri kaudu saadud vastuse keha on täielikult alla laaditud. CSV puhul edastage csv.readerile tekstiridade iteraator, et jutumärkides olevad eraldajad ja mitmerealised kirjed jääksid CSV-andmeteks.

Näitliku semikooloneid kasutava UTF-8-faili jaoks:

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

Valige faili tegelik kodeering ja dialekt. Avaliku CSV allalaadimise jaoks lubatud avaliku puhverserveri marsruudil pakub HTTP-puhverserverite loend kandidaate routes-URLi jaoks. See versioon normaliseerib füüsilised reavahetused LF-iks: iter_lines eemaldab need ja generaator lisab CSV-parseri jaoks reavahetuse tagasi. See loeb siis, kui jutumärkides olev väli jätkub teisel füüsilisel real.

Töövoogude jaoks, mis nõuavad manustatud CRLF-märkide bait-täpset säilitamist, kasutage voogesitavat tekstiümbrise lahendust, mis need reavahetused säilitab. Näite teadlik normaliseerimine sobib kirjepõhiseks töötlemiseks, kus LF on kavandatud esitus.

Üks vastus, palju lugemisi

Iteraator tarbib ühe HTTP-vastuse tükke. See ei saada iga rea jaoks uut päringut. HTTP Range päringud on teine mehhanism ega tuvasta CSV-kirjete piire iseenesest.

response.text kutsumine või kõigi ridade kogumine loendisse tooks kogu sisu mällu tagasi. Voogesitamine vajab endiselt ruumi transpordipuhvritele ja praegusele kirjele, mis võib ise sisaldada suurt välja.

Vastuse kontekst sulgeb keha tsüklist väljumisel, sealhulgas varajase vastavuse korral. Lugemise ajalõpp piirab saabuvate andmete ootamist, mitte suure failiedastuse kogukestust.

Seotud artiklid