首页 > 解决方案 > 无法展开使用 python 压缩的 .zip(不允许操作)

问题描述

我有一个包含多个文件的目录。我想用其中一些文件创建一个存档(例如,只有名称在某个数组中列出的文件)这是我的代码:

import zipfile
import os

def zip_files(report_dir):
    zipf = zipfile.ZipFile('report.zip', 'w', zipfile.ZIP_STORED)
    rep = ['1', '2', 'new']
    print('RRREP ', rep)
    for root, dirs, files in os.walk(report_dir):
        for file in files:
            title = file.title().split('_')[0]
            if title in rep:
                zipf.write(os.path.join(root, file))

    zipf.close()


zip_files('')

当我尝试扩展生成的存档时,我收到一条消息

无法展开“report.zip”(错误 1 ​​- 不允许操作)

如果我添加目录中的所有文件(= 如果我删除if...-code),则可以毫无问题地打开存档。

标签: pythonpython-3.xzipfile

解决方案


似乎创建一个空的 zip 文件可能会给一些外部存档器带来一些问题。

您的过滤器不匹配任何内容。将来,您可以使用标志保护您的存档创建,并在没有匹配项时报告错误:

at_least_one_match = False

for root, dirs, files in os.walk(report_dir):
    for file in files:
        title = file.title().split('_')[0]
        if title in rep:
            at_least_one_match = True
            zipf.write(os.path.join(root, file))


if not at_least_one_match:
    raise Exception("No files were added. Archive is empty/corrupt")

推荐阅读