stream=True ń jẹ́ kí ìṣiṣẹ́ bẹ̀rẹ̀ kí wọ́n tó gba gbogbo ara ìdáhùn tí ó gba proxy kọjá wá. Fún CSV, fi ìtẹ̀síwájú ìlà ọ̀rọ̀ ránṣẹ́ sí csv.reader kí àwọn àlàfo inú àmì-ọ̀rọ̀ àti àwọn àtòjọ onílà púpọ̀ lè wà ní dátà CSV.

Fún fáìlì UTF-8 àpẹẹrẹ tí ó ń lo àmì-ìdáǹdè kan:

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

Yan ẹ̀dà ìkọ̀wé àti èdè ìpínlẹ̀ gbàdà fáìlì náà. Fún gbígbà CSV gbangba lórí ọ̀nà proxy gbangba tí a gbà láyè, àkọ́kọ́ proxy HTTP ń pèsè àwọn olùdíje fún URL routes. Ẹ̀dà yìí ń sọ àwọn òpin ìlà ara di LF: iter_lines ń yọ wọ́n kúrò, olùdá-ìtàn ń fi ìlà tuntun kún un fún olùyẹ̀wò CSV. Ìyẹn ṣe pàtàkì nígbà tí pápá kan inú àmì-ọ̀rọ̀ bá tẹ̀síwájú sí ìlà ara mìíràn.

Fún àwọn ìlànà iṣẹ́ tí ó nílò ìpamọ́ àwọn àmì CRLF tí wọ́n fi sínú ní pípé ní báìtì, lo ètò ìwé-àgbéwọ́lẹ̀ ọ̀rọ̀ ṣíṣàn tí ó ń pa àwọn òpin ìlà yẹn mọ́. Ìsọdọ̀tun àmọ̀ọ́mọ̀ nínú àpẹẹrẹ yẹ fún ìṣiṣẹ́ tí ó dá lórí àtòjọ níbi tí LF jẹ́ ìṣàfihàn tí a fẹ́.

Ìdáhùn kan, ọ̀pọ̀ ìkàwé

Ìtẹ̀síwájú ń lo àwọn ege láti inú ìdáhùn HTTP kan. Kò gbé ìbéèrè tuntun jáde fún gbogbo ìlà. Àwọn ìbéèrè HTTP Range jẹ́ ọ̀nà mìíràn wọ́n kò sì dá ààlà àwọn àtòjọ CSV mọ̀ ní tiẹ̀.

Pípè response.text tàbí kíkójọ gbogbo ìlà sínú àkọ́kọ́ yóò mú gbogbo àkóónú padà sínú ìrántí. Ṣíṣàn ṣì nílò ààyè fún àwọn búfẹ́rì ìgbékalẹ̀ àti àtòjọ lọ́wọ́lọ́wọ́, tí ó lè ní pápá ńlá nínú ara rẹ̀.

Àyíká ìdáhùn ń ti ara pa nígbà tí ìyípadà jáde, pẹ̀lú ìbámu tí ó ṣáájú. Àkókò kíkà ń dín àdúró fún dátà tí ń wọlé kù, kì í ṣe gbogbo ìgbésí ayé gbígbé fáìlì ńlá.

Àwọn àpilẹ̀kọ tó jọra