Игнорировать поврежденный / усеченный tar-файл Python 2.7 - PullRequest
0 голосов
/ 29 января 2020

Моя программа использует список tar.gz файлов. Список повторяется в al oop, и каждый элемент получает: tar.open(elem, 'r:gz').

Проблема, с которой я сталкиваюсь, заключается в том, что когда файл обрезается, l oop сломается, и я получу IOError : CRC check failed 0x5b5655a3 != 0x7ee38e85L. Я доказал, что этот файл поврежден / усечен, запустив в командной строке tar tvf в имени файла. Это возвращает информацию о файле без извлечения.

-rw-rw-rw-  0 root   root  3008744 Nov 13 05:06 alphabot_000573_2019_11_13_02_38_07-asynchronous.txt
-rw-rw-rw-  0 root   root 53686251 Nov 12 21:42 alphabot_000573_2019_11_13_02_38_07-data.1.txt
-rw-rw-rw-  0 root   root 29730477 Nov 12 21:44 alphabot_000573_2019_11_13_02_38_07-data.txt
-rw-rw-rw-  0 root   root    36658 Nov 13 04:12 alphabot_000573_2019_11_13_02_38_07-nb-asynchronous.txt
-rw-rw-rw-  0 root   root    81771 Nov 13 00:15 alphabot_000573_2019_11_13_02_38_07-synchronous.txt
-rw-rw-rw-  0 root   root 169154963 Nov 13 17:34 alphabot_000574_2019_11_13_10_06_49-asynchronous.txt
tar: Truncated input file (needed 169155072 bytes, only 0 available)
tar: Error exit delayed from previous errors.

В моей программе python я бы хотел игнорировать поврежденные / усеченные файлы tar.gz. Код, который я пытался исправить, это IOError:

    try:
        tar = tarfile.open(elem, 'r:gz')
    except IOError:
        continue

Однако программа, похоже, игнорирует это ожидание и не может продолжить l oop со следующим элементом.

Вот полный кусок кода, который поможет вам лучше понять мою программу

    for elem in listOfFiles:
    print elem
    try:
        tar = tarfile.open(elem, 'r:gz')
    except IOError:
        continue
    for member in tar.getmembers():
        f = tar.extractfile(member)
...