我想用 python 在磁盘上的某个位置创建一些文件的 zip 文件。我成功获取了文件夹的路径和每个文件名,所以我这样做了:with zp(os.path.join(self.savePath, self.selectedIndex + ".zip"), "w") as zip: for file in filesToZip: zip.write(self.folderPath + file)一切正常,但输出的 zip 文件包含通向文件的整个文件夹结构。有没有办法只压缩文件而不压缩文件夹?
2 回答
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
达令说
TA贡献1821条经验 获得超6个赞
从文档中:
ZipFile.write(文件名,arcname =无,compress_type =无,compresslevel =无)
将名为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)
![?](http://img1.sycdn.imooc.com/5458643d0001a93c02200220-100-100.jpg)
UYOU
TA贡献1878条经验 获得超4个赞
也许我误解了这个问题,但有人可以向我解释为什么答案不是:
zip.write(file, arcname=os.path.basename(file))
它对我有用,但同样,我可能在问题中遗漏了一些东西......
添加回答
举报
0/150
提交
取消