Mae stream=True yn gadael i brosesu ddechrau cyn i gorff ymateb trwy weinydd dirprwyol gael ei lwytho'n llwyr. Ar gyfer CSV, trosglwyddwch ailadroddydd llinellau testun i csv.reader fel bod gwahanyddion mewn dyfynbris a chofnodion aml-linell yn aros yn ddata CSV.

Ar gyfer ffeil UTF-8 enghreifftiol sy'n defnyddio hanner colon:

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

Dewiswch amgodio a thafodiaith wirioneddol y ffeil. Ar gyfer lawrlwytho CSV cyhoeddus ar lwybr gweinydd dirprwyol cyhoeddus a ganiateir, mae'r rhestr gweinyddwyr dirprwyol HTTP yn cynnig ymgeiswyr ar gyfer URL routes. Mae'r fersiwn hon yn normaleiddio diweddiadau llinell ffisegol i LF: mae iter_lines yn eu dileu, ac mae'r generadur yn ychwanegu llinell newydd yn ôl ar gyfer dadansoddwr CSV. Mae hynny'n bwysig pan fo maes mewn dyfynbris yn parhau ar linell ffisegol arall.

Ar gyfer llifau gwaith sy'n gofyn am gadw'r nodau CRLF wedi'u mewnosod yn fanwl o ran beit, defnyddiwch drefniant lapio testun ffrydio sy'n cadw'r diweddiadau llinell hynny. Mae normaleiddio bwriadol yr enghraifft yn addas ar gyfer prosesu sy'n canolbwyntio ar gofnodion lle LF yw'r gynrychiolaeth fwriadedig.

Un ymateb, llawer o ddarlleniadau

Mae'r ailadroddydd yn bwyta darnau o un ymateb HTTP. Nid yw'n anfon cais newydd ar gyfer pob llinell. Mae ceisiadau HTTP Range yn fecanwaith gwahanol ac nid ydynt yn nodi ffiniau cofnodion CSV yn naturiol.

Byddai galw response.text neu gasglu pob rhes mewn rhestr yn dod â'r cynnwys cyfan yn ôl i'r cof. Mae angen lle ar ffrydio o hyd ar gyfer byfferau cludo a'r cofnod cyfredol, a allai fod â maes mawr ynddo'i hun.

Mae cyd-destun yr ymateb yn cau'r corff pan fydd y ddolen yn gadael, gan gynnwys pan fo cytundeb cynnar. Mae'r terfyn amser darllen yn cyfyngu ar aros am ddata sy'n dod i mewn, nid ar oes gyfan trosglwyddiad ffeil fawr.

Erthyglau cysylltiedig