Чтобы создать в архиве папку, которой нет на диске, нужно использовать метод writestr ().Например:
zf.writestr('folder1/', '')
Чтобы записать файл в архив, при создании ряда папок, которых нет на диске, необходимо использовать метод write (), где в качестве имени файла укажитеего имя на диске, а в качестве аргумента arcname указать путь к нему в архиве.Это создаст все предыдущие папки, указанные в arcname.Например:
zf.write('test.txt', arcname='folder2/test1.txt')
После этих двух строк в архиве будут папки 'folder1' и 'folder2', а в папке 'folder2' будет файл с именем 'test1.txt' содержит содержимое файла 'test.txt 'из файловой системы.