【问题标题】:How to not include folders when zipping a file using ZipFile in python?在 python 中使用 ZipFile 压缩文件时如何不包含文件夹?
【发布时间】:2022-05-03 02:39:41
【问题描述】:

有没有办法在压缩过程中不生成文件夹?当我解压 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 名称相同的文件夹。我想要的是压缩所有文件,当我提取它时,它会直接显示所有文件。基本上,提取过程中不能显示任何文件夹。

【问题讨论】:

  • @KarthickNagarajan,尝试过但不起作用

标签: python python-zipfile


【解决方案1】:

希望下面的例子对你有所帮助

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)

【讨论】:

  • 它仍然会创建一个名称与压缩文件名称相同的文件夹。
  • @JohnCymmer 现在请检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多