Modul zipfile und großes Archiv führt zu Fehler BadZipfile

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
astraios
User
Beiträge: 9
Registriert: Montag 21. April 2008, 15:45

Hallo,

ich möchte Daten aus einem recht großen ZIP-File lesen. Die Probleme mit ZipFile.read() bei großen Dateien im Archiv sind mir bekannt - das spielt aber hier bei mir keine Rolle, da die einzelnen Dateien aus dem Archiv klein genug sind.

Mein Problem tritt bereits beim Instantiieren der ZipFile Klasse auf:

Code: Alles auswählen

import zipfile

z = zipfile.ZipFile("C:\\temp\\ziptest\\container2.zip", "r")

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\...\ziptest.py", line 16, in <module>
    z = zipfile.ZipFile("C:\\temp\\ziptest\\container2.zip", "r")
  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 403, in _RealGetContents
    raise BadZipfile, "Bad magic number for central directory"
zipfile.BadZipfile: Bad magic number for central directory
Die Größe des ZIP-Archivs ist etwas über 2GB und ich vermute, dass es etwas damit zu tun hat. Das Archiv selbst sollte i.O. sein - lässt sich mit Winzip und Winrar ohne Probleme öffnen.
Ist von Euch schon mal jemand auf dieses Problem gestoßen und konnte es lösen? Gibt es vielleicht Alternativen zu diesem Modul?
Im Endeffekt möchte ich nur eine bestimmte Datei aus dem Archiv entpacken.


Vielen Dank im Voraus! :D
lunar

Die Fehlermeldung sagt eigentlich, dass das keine valide ZIP-Datei ist. WinZIP und WinRar scheinen den Fehler einfach nur automatisch zu korrigieren. Hast du mal versucht, die Datei neu zu packen?
astraios
User
Beiträge: 9
Registriert: Montag 21. April 2008, 15:45

Ja, hab das Archiv neu gepackt - es tritt der selbe Fehler auf.
Ich hab mir das ganze mal im Debugger angesehen und ich glaube, dass es bei der Suche nach der "Magic Number" irgendwo an der falschen Dateiposition landet... :K
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Python 2.5 scheint Probleme zu haben, wenn ein Zip-Archiv >= 2GB ist. Ich bekam den selben Fehler wie Du ("Bad magic number for central directory"), als ich versuchte, ein ca. 2,1 GB grosses Archiv aus vielen kleineren Dateien mit Python 2.5.2 zu öffnen. In Python 2.6 scheints zu funktionieren (Python 2.6.2, Win XP, 32 Bit).
Antworten