Тестирование архивных данных (эквивалент unzip -t) - Python - PullRequest
0 голосов
/ 01 августа 2011

У меня есть программа, написанная на python, которая загружает архив (zip-файл) на удаленный сервер.Но перед загрузкой я должен проверить, что он не поврежден, поэтому я хочу выполнить что-то вроде unzip -t и выдать ошибку в случае сбоя.

Есть ли что-то реализованное в python, которое может это сделать (ничего не удалось найти в Google), или есть способ отловить ошибку из моей программы, если я выполню системный вызов unzip -t?

Спасибо

Ответы [ 2 ]

4 голосов
/ 01 августа 2011

Zipfile.testzip ваш друг.

Прочитайте все файлы в архиве и проверьте их CRC и заголовки файлов. Вернуть имя первого неверного файла или же вернуть Нет.

2 голосов
/ 01 августа 2011

Использование ZipFile.testzip:

import zipfile
def zip_isOk(fn):
    with zipfile.ZipFile(fn, 'r') as zipf:
        return zipf.testzip() is None
...