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

时间:2014-03-17 21:18:39

标签: python file zip directory archive

我有一个名为:' files'的文件夹。其中包含大量的jpg照片。我还有一个名为' temp.kml'的文件。我想创建一个KMZ文件(基本上是一个zip文件),其中包含temp.kml文件和包含照片的文件目录。

这是我的代码:

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

这会创建kmz文件并将temp.kml放入其中。但我也想把名为'' files'的文件夹在...中。我该怎么做?

我在StackOverflow上看到有些人使用shutil制作zip文件。任何人都可以提供解决方案吗?

3 个答案:

答案 0 :(得分:23)

您可以使用shutil

import shutil

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

答案 1 :(得分:7)

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")

答案 2 :(得分:0)

实际上,我认为这是迄今为止最好的答案here,您无需遍历任何内容。您将使用shutil,它是python内置库。