如何在Python中压缩文件夹和文件?

10 投票
2 回答
40064 浏览
提问于 2025-04-17 22:43

我有一个叫做“files”的文件夹,里面放了很多jpg格式的照片。还有一个文件叫“temp.kml”。我想创建一个KMZ文件(其实就是一个压缩文件),里面要包含temp.kml文件和“files”文件夹,也就是里面的照片。

这是我的代码:

zfName = 'simonsZip.kmz'
foo = zipfile.ZipFile(zfName, 'w')
foo.write("temp.kml")
foo.close()
os.remove("temp.kml")

这段代码可以创建kmz文件,并把temp.kml放进去。但是我还想把叫“files”的文件夹也放进去。我该怎么做呢?

我在StackOverflow上看到,有些人用shutil来制作压缩文件。有没有人能给我提供个解决办法?

2 个回答

36

你可以使用 shutil 这个库。

import shutil

shutil.make_archive("simonsZip", "zip", "files")
13

Python中的zipfile模块不支持直接添加一个包含文件的文件夹,所以你需要一个一个地添加文件。

下面是一个(未经测试的)示例,展示了如何通过修改你的代码来实现这一点:

import os

zfName = 'simonsZip.kmz'
foo = zipfile.ZipFile(zfName, 'w')
foo.write("temp.kml")
# Adding files from directory 'files'
for root, dirs, files in os.walk('files'):
    for f in files:
        foo.write(os.path.join(root, f))
foo.close()
os.remove("temp.kml")

撰写回答