如何创建目录的zip压缩文件?

882 投票
30 回答
782109 浏览
提问于 2025-04-15 16:44

我该如何在Python中创建一个文件夹结构的压缩包?

30 个回答

89

要把mydirectory里的所有内容,包括所有文件和子文件夹,添加到一个新的压缩文件里,可以使用以下命令:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
2151

最简单的方法是使用 shutil.make_archive。这个方法可以创建 zip 和 tar 格式的压缩文件。

import shutil
shutil.make_archive(output_filename, 'zip', dir_name)

如果你需要做一些比简单压缩整个文件夹更复杂的事情,比如跳过某些文件,那你就需要深入了解一下 zipfile 模块,正如其他人所建议的那样。

718

正如其他人所提到的,你应该使用 zipfile 这个库。文档里告诉你有哪些功能可以用,但并没有详细解释怎么把整个文件夹压缩成一个zip文件。我觉得用一些示例代码来说明会更简单:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)

撰写回答