Как я могу сделать 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, но без какой-либо структуры каталогов.
Как я могу это сделать? Я не нашел эту информацию в документах.
Спасибо
Ответы
Ответ 1
Сначала добавьте
import os
затем измените строку archive.write
следующим образом:
archive.write(pdffile, os.path.basename(pdffile))
Это указывает, что каждый PDF должен быть записан в zip файл с пустым эквивалентом только части имени файла пути, из которого вы его читаете (указав параметр arcname для вызова write()
.)
Обратите внимание, что это означает, что если у вас есть два файла PDF с одинаковым именем в разных каталогах, они будут перезаписаны другим.