使用Python压缩文件夹会添加一个额外的文件夹

问题描述 投票:0回答:1

我可以使用 Python 压缩文件:

with zipfile.ZipFile("jam.zip", "w") as zippy:
  zippy.write('custard.txt')

要压缩我可以使用的文件夹:

myfolder = "D:\\temp\\myfolder"
thefiles = os.listdir(myfolder)
with zipfile.ZipFile("jam.zip", "w") as zippy:
  for file in thefiles:
    file_path = os.path.join(myfolder, file)
    zippy.write(file_path)

这工作正常,但会创建一个如下所示的 zip 文件:

 jam.zip
 .   temp
     .   myfolder
         .   custard.txt

它压缩了正确的文件和文件夹,但包含“temp”作为额外的无关文件夹。 我该如何压缩它,使其像这样:

 jam.zip
 .   myfolder
     .   custard.txt
python-3.x windows zip subdirectory
1个回答
0
投票

您可以使用

pathlib.Path.relative_to
传递方法
arcname
 的参数 
zipfile.ZipFile.write
的相对路径名:

import zipfile

from pathlib import Path

FOLDER = r"D:\temp\test"

FILE_DESTINATION = r"D:\temp\test.zip"

with zipfile.ZipFile(FILE_DESTINATION, "w") as archive:
    for path in Path(FOLDER).glob("**/*"):
        archive.write(path, path.relative_to(FOLDER))

或者,您也可以使用

shutil.make_archive

import shutil

FOLDER = r"D:\temp\test"

shutil.make_archive(FOLDER, format="zip", root_dir=FOLDER)
© www.soinside.com 2019 - 2024. All rights reserved.