Распаковка файла в запросе потока дает UnexpectedSignatureError

Попытка получить экспорт файла из запроса в формате zip. Я хочу скачать построчно, так как потом буду заливать в облачное хранилище и не хочу хранить весь файл в памяти.

Я попробовал следующее:

with requests.get(export_url, stream=True) as response:
    for file_name, file_size, unzipped_chunks in stream_unzip(response.iter_lines()):
        for chunk in unzipped_chunks:
            print(chunk)

Однако я получаю следующую ошибку, которую не знаю, как решить и что это значит.

UnexpectedSignatureError: b'<htm'

🤔 А знаете ли вы, что...
Python - это универсальный язык программирования.


50
1

Ответ:

Решено

Попробуй это:

from stream_unzip import stream_unzip
import httpx

def zipped_chunks():
    # Iterable that yields the bytes of a zip file
    with httpx.stream('GET', 'https://www.example.com/my.zip') as r:
        yield from r.iter_bytes(chunk_size=65536)

for file_name, file_size, unzipped_chunks in stream_unzip(zipped_chunks()):
    for chunk in unzipped_chunks:
        print(chunk)