stream=True អនុញ្ញាតឱ្យចាប់ផ្តើមដំណើរការមុនពេលតួការឆ្លើយតបតាមប្រូកស៊ីត្រូវបានទាញយកពេញលេញ។ សម្រាប់ CSV សូមបញ្ជូនឧបករណ៍ធ្វើម្តងទៀតបន្ទាត់អត្ថបទទៅ csv.reader ដើម្បីឱ្យសញ្ញាបំបែកក្នុងសញ្ញាសម្រង់ និងកំណត់ត្រាច្រើនបន្ទាត់នៅតែជាទិន្នន័យ CSV។

សម្រាប់ឯកសារ UTF-8 ឧទាហរណ៍ដែលប្រើសញ្ញាចុចក្បៀស៖

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

ជ្រើសរើសការអ៊ិនកូដ និងគ្រាមភាសាពិតរបស់ឯកសារ។ សម្រាប់ការទាញយក CSV សាធារណៈតាមផ្លូវប្រូកស៊ីសាធារណៈដែលបានអនុញ្ញាត បញ្ជីប្រូកស៊ី HTTP ផ្តល់បេក្ខជនសម្រាប់ URL routes។ កំណែនេះធ្វើឱ្យចុងបន្ទាត់រូបវន្តស្តង់ដារជា LF៖ iter_lines ដកពួកវាចេញ ហើយឧបករណ៍បង្កើតបន្ថែមបន្ទាត់ថ្មីឡើងវិញសម្រាប់ឧបករណ៍ញែក CSV។ រឿងនេះសំខាន់នៅពេលវាលក្នុងសញ្ញាសម្រង់បន្តទៅបន្ទាត់រូបវន្តមួយផ្សេងទៀត។

សម្រាប់លំហូរការងារដែលត្រូវការរក្សាតួអក្សរ CRLF ដែលបង្កប់ដោយភាពត្រឹមត្រូវកម្រិតបៃ សូមប្រើការរៀបចំរុំអត្ថបទជាស្ទ្រីមដែលរក្សាចុងបន្ទាត់ទាំងនោះ។ ការធ្វើស្តង់ដារដោយចេតនានៅក្នុងឧទាហរណ៍សមស្របសម្រាប់ដំណើរការផ្តោតលើកំណត់ត្រា ដែល LF ជាតំណាងដែលចង់បាន។

ការឆ្លើយតបមួយ ការអានច្រើន

ឧបករណ៍ធ្វើម្តងទៀតប្រើបំណែកពីការឆ្លើយតប HTTP មួយ។ វាមិនបញ្ជូនសំណើថ្មីសម្រាប់បន្ទាត់នីមួយៗទេ។ សំណើ HTTP Range គឺជាយន្តការផ្សេង ហើយមិនកំណត់អត្តសញ្ញាណព្រំដែនកំណត់ត្រា CSV ដោយធម្មជាតិទេ។

ការហៅ response.text ឬការប្រមូលជួរទាំងអស់ចូលក្នុងបញ្ជីនឹងនាំខ្លឹមសារទាំងមូលត្រឡប់ទៅអង្គចងចាំវិញ។ ការផ្សាយស្ទ្រីមនៅតែត្រូវការកន្លែងសម្រាប់ប្រណីតាងដឹកជញ្ជូន និងកំណត់ត្រាបច្ចុប្បន្ន ដែលខ្លួនឯងអាចផ្ទុកវាលធំមួយ។

បរិបទការឆ្លើយតបបិទតួនៅពេលរង្វិលជុំចេញ រួមទាំងពេលផ្គូផ្គងឆាប់រហ័ស។ ពេលវេលាអានកំណត់ការរង់ចាំទិន្នន័យចូល មិនមែនអាយុកាលសរុបនៃការផ្ទេរឯកសារធំទេ។

អត្ថបទពាក់ព័ន្ធ