gpt4 book ai didi

Python:压缩文件夹 + 文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:44 24 4
gpt4 key购买 nike

我有这样的文件夹结构:C:\Users\Simon\Desktop\mySoftware\files\output\

在输出文件夹中,有一个文件和一个包含另一个文件的文件夹。

我需要 Python 来压缩“输出”文件夹中的文件(和文件夹)。

我尝试了以下方法:

#!/usr/bin/env python
import os, zipfile

simonsFiles = 'C:\Users\Simon\Desktop\mySoftware\files\output\\'

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

但是 Python 会创建一个包含整个结构的 zip 文件夹:

用户\Simon\Desktop\mySoftware\files\output\

当我开始输出时,它有我想压缩成 zip 的文件夹和文件。

如何让 Python 将文件夹和文件压缩成一个 zip 而不是整个目录结构?

最佳答案

您可能希望将第二个可选参数 arcname 提供给 zf.write() ( http://docs.python.org/2/library/zipfile#zipfile.ZipFile.write )。以下功能对我有用:

def zip_dir(zipname, dir_to_zip):
dir_to_zip_len = len(dir_to_zip.rstrip(os.sep)) + 1
with zipfile.ZipFile(zipname, mode='w', compression=zipfile.ZIP_DEFLATED) as zf:
for dirname, subdirs, files in os.walk(dir_to_zip):
for filename in files:
path = os.path.join(dirname, filename)
entry = path[dir_to_zip_len:]
zf.write(path, entry)

此函数不会存档空子目录,为此您必须在第二个 for 循环中迭代文件+子目录。

关于Python:压缩文件夹 + 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21356551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com