我可以使用 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
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)