在没有文件夹结构的python中压缩文件

问题描述

我想用python在磁盘上某个位置创建一些文件的zip文件。我成功获取文件夹的路径和每个文件名,所以我做到了:

with zp(os.path.join(self.savePath,self.selectedindex + ".zip"),"w") as zip:
                for file in filesToZip:
                    zip.write(self.folderPath + file)

一切正常,但是输出的zipfile包含导致文件的整个文件夹结构。有没有办法只压缩文件而不压缩带有它的文件夹?

解决方法

来自the documentation

ZipFile.write(filename,arcname = None,compress_type = None, compresslevel = None)

将名为 filename 的文件写入存档,并为其提供存档 名称 arcname (默认情况下,该名称与filename相同,但是 没有驱动器号,并删除了引导路径分隔符。

因此,只需指定一个明确的arcname

with zp(os.path.join(self.savePath,self.selectedIndex + ".zip"),"w") as zip:
                for file in filesToZip:
                    zip.write(self.folderPath + file,arcname=file)