Как добавить папку в zip, если эта папка не существует в файловой системе? - PullRequest
0 голосов
/ 14 февраля 2019

Задача - создать zip-архивы, содержащие дерево папок с файлами.Но один нюанс: этих папок нет на диске, есть только файлы с другими именами, а дерево содержится в базе данных.

Я пытался использовать стандартный zipfile, но когда я пытался вызватьМетод записи Я получил сообщение об ошибке, что на диске нет такой папки.Как я могу решить эту задачу?

1 Ответ

0 голосов
/ 16 февраля 2019

Чтобы создать в архиве папку, которой нет на диске, нужно использовать метод writestr ().Например:

zf.writestr('folder1/', '')

Чтобы записать файл в архив, при создании ряда папок, которых нет на диске, необходимо использовать метод write (), где в качестве имени файла укажитеего имя на диске, а в качестве аргумента arcname указать путь к нему в архиве.Это создаст все предыдущие папки, указанные в arcname.Например:

zf.write('test.txt', arcname='folder2/test1.txt')

После этих двух строк в архиве будут папки 'folder1' и 'folder2', а в папке 'folder2' будет файл с именем 'test1.txt' содержит содержимое файла 'test.txt 'из файловой системы.

...