Как не включать папки при архивировании файла с помощью ZipFile в python? - PullRequest
1 голос
/ 13 июля 2020

Есть ли способ не создавать папки во время zip? Когда я извлекаю zip-архив, он должен показать все файлы напрямую, без доступа к папке.

file_paths = utils.get_all_file_paths(path)
with ZipFile("{}/files.zip".format(path), "w") as zip:
    for file in file_paths:
    zip.write(file, os.path.basename(file))

Я уже пробовал arcname, но он все равно создаст папку files.

РЕДАКТИРОВАТЬ: мой код выше уже удалит родительскую папку. Прямо сейчас, когда я извлекаю zip-файл, сначала отображается папка с именем, совпадающим с именем zip-архива. Я хочу заархивировать все файлы, и когда я извлечу его, он покажет все файлы напрямую. Во время извлечения папки не должны отображаться.

1 Ответ

0 голосов
/ 13 июля 2020

Надеюсь, следующий пример поможет вам

import os
import zipfile

TARGET_DIRECTORY = "../test"
ZIPFILE_NAME = "CompressedDir.zip"

def zip_dir(directory, zipname):
  if os.path.exists(directory):
    outZipFile = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)

    for dirpath, dirnames, filenames in os.walk(directory):
      for filename in filenames:

        filepath   = os.path.join(dirpath, filename)
        outZipFile.write(filepath)

    outZipFile.close()

if __name__ == '__main__':
  zip_dir(TARGET_DIRECTORY, ZIPFILE_NAME)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...