Как транслировать из ZipFile? Как застегнуть «на лету»?Python

Программы на Python
Anonymous
Как транслировать из ZipFile? Как застегнуть «на лету»?

Сообщение Anonymous »


Я хочу заархивировать поток и передать результат. Я делаю это с помощью AWS Lambda, что важно с точки зрения доступного дискового пространства и других ограничений. Я собираюсь использовать заархивированный поток для написания объекта AWS S3, используя upload_fileobj() или put(), если это имеет значение.

Я могу создать архив в виде файла, пока у меня не будет небольших объектов:

импортировать zip-файл zf = zipfile.ZipFile("/tmp/byte.zip", "w") zf.writestr(имя файла, my_stream.read()) zf.close() Для большого объема данных я могу создать объект вместо файла:

из io import BytesIO ... байт = БайтыIO() zf = zipfile.ZipFile(байт, "w") .... но как мне передать заархивированный поток на выход? Если я использую zf.close() — поток закроется, если не использую — архив будет неполным.

Вернуться в «Python»