Windows 上的 Python zip 文件问题

标签 python python-zipfile

我编写了一个简单、粗略的程序,可以自动压缩当前工作目录中的所有内容。它在Linux上运行得很好,但在Windows上运行时存在很大的问题。

这是我的代码:

import os, zipfile

zip = zipfile.ZipFile('zipped.zip', 'w')  #Create a zip file
zip.close()

zip = zipfile.ZipFile('zipped.zip', 'a')  #Make zip file append instead of overwriting
for dir, subdir, file in os.walk(os.path.relpath('.')):  #Loop for walking thru the directory

    for subdirectory in subdir:
        subdirs = os.path.join(dir, subdirectory)  
        zip.write(subdirs, compress_type=zipfile.ZIP_DEFLATED)

    for files in file:
        fil = os.path.join(dir, files)
        zip.write(fil, compress_type=zipfile.ZIP_DEFLATED)

zip.close()

当我在Windows上运行它时,它不会停止压缩,而是无限地在压缩文件中创建“zipped.zip”文件,让它运行几秒钟后,生成几百MB的文件。在 Linux 上,程序将在压缩除新创建的 zipped.zip 之外的所有文件后停止。

Screenshot: A "zipped.zip" inside the "zipped.zip"

我想知道我是否错过了一些可以使其在 Windows 上正常运行的代码?

最佳答案

我会将文件夹压缩到临时 zip 文件中,然后将临时 zip 文件移动到该文件夹​​中。

关于Windows 上的 Python zip 文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45085419/

相关文章:

python - 使用 scipy interpolate griddata 方法重新网格化数据时出现意外的内存错误

Python 压缩文件模块 : difference between zipfile. ZIP_DEFLATED 和 zipfile.ZIP_STORED

python - zipfile.write() : relative path of files, 在 zip 存档中复制

python - Python2 和 Python3 之间的 zipfile 头语言编码位设置不同

Python 2.7。使用枚举读取一个文件以获取行号并使用行号转到另一个文件

python - 使用 easy webdav 时如何验证我的自签名证书?

python - 自定义指标的 Xgboost Early.stop.round 错误

python - Django 模型选择选项,填充了来自其他模型实例的字段

python - 在 zipfile 中从 URL 读取 shapefile 时,错误为初始值不是 str

python - 在 python 中使用 zipfile 模块排除目录被压缩