【问题标题】:How to zip a folder and file in python? [duplicate]如何在python中压缩文件夹和文件? [复制]
【发布时间】:2014-04-23 07:45:16
【问题描述】:

我有一个名为“文件”的文件夹,其中包含许多 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 放入其中。但我也想放入名为“文件”的文件夹。我该怎么做?

我在 StackOverflow 上读到,有些人使用 shutil 制作 zip 文件。谁能提供解决方案?

【问题讨论】:

标签: python file zip directory archive


【解决方案1】:

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

【讨论】:

  • 获得压缩不仅仅是存储 -> zipfile.ZipFile('myzip.zip', "w", zipfile.ZIP_DEFLATED)
【解决方案2】:

您可以使用shutil

import shutil

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

【讨论】:

  • @radtek - 基于 OP 的问题,使用旧版 Python 并没有明显的担忧,但我明白你的意思。 ;)
  • 我正在处理 python 2.5,希望不会太久。所以 zipfile 模块对我有用。 zipfile 和 shutil 在 3.x 中可用
  • 这看起来是一个不错的解决方案,但在我的情况下,我想压缩提供的目录而不是目录的内容,这会导致压缩炸弹。有没有办法做到这一点。我正在尝试复制 7zip 右键单击​​目录的操作。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2010-12-14
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多