Невозможно развернуть .zip (операция не разрешена), заархивированный с python - PullRequest
0 голосов
/ 30 января 2019

У меня есть каталог с несколькими файлами.Я хочу создать архив с некоторыми из этих файлов (например, только файлы с именами, указанными в некотором массиве). Это мой код:

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... -код), архив можно открыть без проблем.

1 Ответ

0 голосов
/ 30 января 2019

Кажется, что создание пустого 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")
...