Bad magic number Fehler mit der ZipFile-Modul in Python
Ich bin mit Python 2.7 unter Windows 7 (64 bit).
Wenn ich versuche zu entpacken einer zip-Datei mit der ZipFile-Modul bekomme ich folgende Fehlermeldung:-
Traceback (most recent call last):
File "unzip.py", line 8, in <module>
z.extract(name)
File "C:\Python27\lib\zipfile.py", line 950, in extract
return self._extract_member(member, path, pwd)
File "C:\Python27\lib\zipfile.py", line 993, in _extract_member
source = self.open(member, pwd=pwd)
File "C:\Python27\lib\zipfile.py", line 897, in open
raise BadZipfile, "Bad magic number for file header"
zipfile.BadZipfile: Bad magic number for file header
WinRAR extrahieren konnte die Datei, die ich extrahieren will einfach nur gut.
Hier ist der code, den ich verwendet, um zu extrahieren von Dateien aus myzip.zip
from zipfile import ZipFile
z = ZipFile('myzip.zip') //myzip.zip contains just one file, a password protected pdf
for name in z.namelist():
z.extract(name)
Dieser code ist in Ordnung, für viele andere zip-Dateien habe ich mit WinRAR aber myzip.zip
Ich versuchte kommentieren Sie die folgenden Zeilen in Python27\Lib\zipfile.py
:-
if fheader[0:4] != stringFileHeader:
raise BadZipfile, "Bad magic number for file header"
Aber das hat Sie nicht wirklich helfen. Läuft mein code mit diesem Effekt, ich bekomme einige dump auf meine shell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Richtige ZIP-Dateien immer "\x50\x4B\x03\x04" in der Anfang. Sie können testen, ob die Datei wirklich ZIP-Datei mit diesem code:
Wird es print header der Datei, so dass Sie überprüfen können.
UPDATE
Seltsam, testzip() und alle anderen Funktionen funktionieren gut. Hatte Sie versucht, einen solchen code?
PK♥♦
als Ausgabe.Stellen Sie sicher, dass Sie wirklich das öffnen einer ZIP-Datei, nicht zum Beispiel eine RAR Datei mit einer .zip-Erweiterung. Richtige zip-Dateien haben einen header, der wurde nicht gefunden in diesem Fall.
Den
zipfile
Modul kann nur zip-Dateien öffnen. WinRAR kann auch geöffnet werden, andere Formate, und es wahrscheinlich ignoriert die mit dem Namen und sieht nur die Datei selbst.