Архивирование нескольких файлов CSV на сервере с помощью StreamingResponse в Python

Я пытаюсь создать Zip-файл через StreamingResponse (чтобы он не сохранялся локально) на моем сервере для отправки во внешний интерфейс. Zip-файл будет содержать файлы CSV, преобразованные из нескольких фреймов данных. Пока я получаю Zip-файл через Postman, но когда я пытаюсь его открыть, я получаю сообщение об ошибке, указывающее, что Zip-файл поврежден:Ошибка

Код, который я написал до сих пор:

      def prepare_zip(dafaframes):

outfile = io.BytesIO()
with zipfile.ZipFile(outfile, 'w') as zf:
    for n, f in enumerate(dafaframes):
        stream = io.StringIO()
        f.to_csv(stream, index=False)
        stream.seek(0)
        csv_buffer = stream.read()
        zf.writestr("{}.csv".format(n), csv_buffer)
    # Returns a csv prepared to be downloaded in the FrontEnd
    outfile.seek(0)
    response = StreamingResponse(outfile,
                                 media_type="application/x-zip-compressed"
                                 )

    response.headers["Content-Disposition"] = "attachment; filename=test.zip"

    return response

Параметр dataframes - это список, содержащий фреймы данных, которые предполагается преобразовать в CSV и хранить в Zip-файле.

0 ответов

Другие вопросы по тегам