Исходя из этого ответа на другой вопрос , у вас может быть проблема с режимом чтения. Вам также потребуется вызвать zf.close()
, явно или неявно, прежде чем файл будет фактически завершен.
Я думаю, что есть более простой способ обработки этого с использованием временного файла, который должен иметь преимущество: не нужно помещать все содержимое файла в память.
from tempfile import TemporaryFile
from zipfile import ZipFile
with TemporaryFile() as tf:
with ZipFile(tf, mode="w") as zf:
zf.writestr("file1.txt", "The first file")
zf.writestr("file2.txt", "A second file")
tf.seek(0)
print(tf.read())
Блоки with
здесь приведут к тому, что ваш временный файл выйдет из области видимости и будет удален, а zf.close
будет вызван неявно перед вами попытайтесь прочитать файл.
Если цель здесь - просто создать резервную копию данных, а не использовать указанный формат c, я бы предложил использовать встроенный dumpdata
команда управления. Вы можете вызвать его из кода , если хотите представить результаты в таком виде.