1

我正在尝试将列表localpath_list中的文件压缩到一个压缩文件“reports.zip”中。

它按预期工作,但是当我提取reports.zip文件时,在其中创建了文件夹。

即所有 .xls 文件都在 .xls 下files/sample/

我需要的只是没有任何文件夹结构的 .xls 文件。

localpath_list = ["files/sample/sample1.xls", "files/sample/sample2.xls", "files/sample/sample3.xls"]
with zipfile.ZipFile(fr"downloads/reports.zip", 'w') as zipF:
    for file in localpath_list:
        zipF.write(file, compress_type=zipfile.ZIP_DEFLATED)
4

1 回答 1

1

根据:[Python.Docs]: zipfile - ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)重点是我的):

将名为filename的文件写入存档,并为其指定存档名称arcname(默认情况下,这将与filename相同,...

所以你应该使用:

zipF.write(file, arcname=os.path.basename(file), compress_type=zipfile.ZIP_DEFLATED)

如果计划扩展功能(包括来自多个文件夹的文件),您应该注意重复的文件基础名称(在不同的文件夹中)。

于 2021-12-21T15:03:23.177 回答