stream=True proksi orqali kelgan javob tanasi to'liq yuklab olinishidan oldin ishlov berishni boshlash imkonini beradi. CSV uchun csv.reader ga matn qatorlari iteratorini uzating, shunda qo'shtirnoq ichidagi ajratgichlar va ko'p qatorli yozuvlar CSV ma'lumoti bo'lib qoladi.

Nuqta-vergul ishlatadigan namunali UTF-8 fayl uchun:

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

Faylning haqiqiy kodlanishi va shevasini tanlang. Ruxsat etilgan ommaviy proksi yo'lida ommaviy CSV yuklab olish uchun HTTP proksilar ro'yxati routes URL uchun nomzodlar beradi. Ushbu versiya jismoniy qator oxirlarini LF ga normallashtiradi: iter_lines ularni olib tashlaydi, generator esa CSV tahlilchisi uchun yangi qatorni qayta qo'shadi. Bu qo'shtirnoq ichidagi maydon boshqa jismoniy qatorga davom etganda muhim.

Ichiga joylashtirilgan CRLF belgilarini bayt aniqligida saqlashni talab qiladigan ish oqimlari uchun o'sha qator oxirlarini saqlaydigan oqimli matn o'rov qurilmasidan foydalaning. Misoldagi ataylab normallashtirish LF mo'ljallangan tasvir bo'lgan yozuvga yo'naltirilgan ishlov berish uchun mos keladi.

Bitta javob, ko'p o'qish

Iterator bitta HTTP javobidan bo'laklarni iste'mol qiladi. Har bir qator uchun yangi so'rov yubormaydi. HTTP Range so'rovlari boshqa mexanizm bo'lib, ular CSV yozuv chegaralarini tabiiy ravishda aniqlamaydi.

response.text ni chaqirish yoki barcha qatorlarni ro'yxatga yig'ish butun mazmunni yana xotiraga qaytaradi. Oqimli ishlov berish hali ham transport buferlari va joriy yozuv uchun joyga muhtoj, yozuvning o'zi katta maydonni saqlashi mumkin.

Javob konteksti tsikldan chiqqanda tanani yopadi, shu jumladan erta mos kelganda. O'qish taym-auti kiruvchi ma'lumotlarni kutishni cheklaydi, katta fayl uzatishning umumiy umrini emas.

O'xshash maqolalar