Подтвердить что ты не робот

Как я могу сделать zip файл с помощью сглаженной структуры каталогов с помощью Zipfile в Python?

Я использую пакет ZipFile для zip файла в Python. Здесь мой код:

archive = zipfile.ZipFile(join(settings.ARCHIVES_DIR, 'test.zip'), "a")

for pdffile in glob.glob(join(settings.IBILLING_DIR, '*.pdf')):
    archive.write(pdffile)

archive.close()

Проблема, с которой я столкнулся, заключается в том, что созданный ZIP файл содержит структуру каталогов. Добавленные файлы добавляются с полным путем, который означает, что пользователь, который извлекает архив, также будет получать структуру каталогов. Я хотел бы добавить файлы в ZIP, но без какой-либо структуры каталогов.

Как я могу это сделать? Я не нашел эту информацию в документах.

Спасибо

4b9b3361

Ответ 1

Сначала добавьте

import os

затем измените строку archive.write следующим образом:

archive.write(pdffile, os.path.basename(pdffile))

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

Обратите внимание, что это означает, что если у вас есть два файла PDF с одинаковым именем в разных каталогах, они будут перезаписаны другим.