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 ຫຼື ການເກັບທຸກແຖວໃສ່ລາຍການຈະນຳເນື້ອຫາທັງໝົດກັບຄືນສູ່ໜ່ວຍຄວາມຈຳ. ການສະຕຣີມຍັງຕ້ອງການບ່ອນສຳລັບບັຟເຟີຂົນສົ່ງ ແລະ ບັນທຶກປັດຈຸບັນ ເຊິ່ງຕົວມັນເອງອາດມີຊ່ອງຂໍ້ມູນໃຫຍ່.

ບໍລິບົດຂອງການຕອບສະໜອງປິດຕົວເມື່ອອອກຈາກວົງຈອນ ລວມທັງເມື່ອພົບການຈັບຄູ່ໄວ. ເວລາຈຳກັດການອ່ານຈຳກັດການລໍຖ້າຂໍ້ມູນຂາເຂົ້າ ບໍ່ແມ່ນອາຍຸທັງໝົດຂອງການໂອນໄຟລ໌ໃຫຍ່.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ