Моя программа использует список 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)