如何在Python中压缩文件夹和文件?
我有一个叫做“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")