У меня есть два zip файла, оба из них хорошо открываются с помощью Проводника Windows и 7-zip.
Однако, когда я открываю их с помощью zipfile-модуля Python [zipfile.ZipFile( "filex.zip" )], один из них открывается, а другой дает ошибку "BadZipfile: File is not a zip file
".
Я убедился, что последний является действительным Zip файлом, открыв его с помощью 7-Zip и просмотрев его свойства (говорит 7Zip.ZIP). Когда я открываю файл текстовым редактором, первые два символа являются "PK", показывая, что это действительно zip файл.
Я использую Python 2.5 и действительно не знаю, как это сделать. Я пробовал это как с Windows, так и с Ubuntu, и проблема существует на обеих платформах.
Обновление: Отслеживание с Python 2.5.4 в Windows:
Traceback (most recent call last):
File "<module1>", line 5, in <module>
zipfile.ZipFile("c:/temp/test.zip")
File "C:\Python25\lib\zipfile.py", line 346, in init
self._GetContents()
File "C:\Python25\lib\zipfile.py", line 366, in _GetContents
self._RealGetContents()
File "C:\Python25\lib\zipfile.py", line 378, in _RealGetContents
raise BadZipfile, "File is not a zip file"
BadZipfile: File is not a zip file
В основном, когда функция _EndRecData
вызывается для записи данных из "Конец центрального каталога", проверка длины комментария завершается неудачно [endrec [7] == len (комментарий)].
Значения locals в функции _EndRecData
следующие:
END_BLOCK: 4096,
comment: '\x00',
data: '\xd6\xf6\x03\x00\x88,N8?<e\xf0q\xa8\x1cwK\x87\x0c(\x82a\xee\xc61N\'1qN\x0b\x16K-\x9d\xd57w\x0f\xa31n\xf3dN\x9e\xb1s\xffu\xd1\.....', (truncated)
endrec: ['PK\x05\x06', 0, 0, 4, 4, 268, 199515, 0],
filesize: 199806L,
fpin: <open file 'c:/temp/test.zip', mode 'rb' at 0x045D4F98>,
start: 4073