Entpacken einer sehr großen Zip-Datei

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
Codo
User
Beiträge: 8
Registriert: Montag 25. Oktober 2021, 19:25

Hallo,

ich muss eine Zip-Datei entpacken, die etwa 30 GB groß ist. Beim Entpacken wird nur ein Unterverzeichnis ohne die betreffenden Dateien entpackt. Nach mehrfachen Tests scheint es mir, als ob die Größe hier hinderlich ist. Bei einem ähnlich aufgebauten Zip-File mit etwa 2GB Größe wird alles ordentlich entpackt. Was muss ich eventuell berücksichtigen?

MfG
Sirius3
User
Beiträge: 18276
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie sieht denn Dein Programm aus? Gibt es eine Fehlermeldung?
paddie
User
Beiträge: 103
Registriert: Donnerstag 11. Oktober 2018, 18:09

Kann es vielleicht sein, dass das Dateisystem nicht mit der Dateigrösse klar kommt?
Codo
User
Beiträge: 8
Registriert: Montag 25. Oktober 2021, 19:25

Hallo,

hier mein Programm:

Code: Alles auswählen

#! /usr/bin/env python3

targetdir="/volume1/Download/Skoda"
upd="OI_P73_EU_202225_Offline_Update"

from zipfile import ZipFile

with ZipFile(upd+".zip","r") as zip:
   # Extract all the contents of zip file in current directory
   zip.printdir()
   zip.extractall('temp')

zip.close
Und das ist auf der Console zu sehen:

MIB31_EUSDS.SDS/VDE/SM/country.db 2021-11-30 11:17:54 292864
MIB31_EUSDS.SDS/VDE/SM/ITI/ 2022-06-06 09:11:02 0
MIB31_EUSDS.SDS/VDE/SM/ITI/country.fcf 2021-11-30 11:17:52 83719
MIB31_EUSDS.SDS/VDE/TR/ 2022-06-06 09:11:04 0
MIB31_EUSDS.SDS/VDE/TR/country.db 2021-11-30 11:17:36 137049088
MIB31_EUSDS.SDS/VDE/TR/TRT/ 2022-06-06 09:11:12 0
MIB31_EUSDS.SDS/VDE/TR/TRT/country.fcf 2021-11-30 11:17:20 25957857
MIB31_EUSDS.SDS/VDE/VA/ 2022-06-06 09:11:12 0
MIB31_EUSDS.SDS/VDE/VA/country.db 2021-11-30 11:16:48 18432
MIB31_EUSDS.SDS/VDE/VA/ITI/ 2022-06-06 09:11:14 0
MIB31_EUSDS.SDS/VDE/VA/ITI/country.fcf 2021-11-30 11:16:48 9041
MIB31_EUWO.UR5001/BMD.NDS 2021-11-30 11:21:34 458752
MIB31_EUWO.UR5001/CONTENT.CFG 2021-11-30 11:22:34 723
MIB31_EUWO.UR5001/DTM.NDS 2021-11-30 11:22:32 1029660672
MIB31_EUWO.UR5001/NAME.NDS 2021-11-30 11:22:36 163840
MIB31_EUWO.UR5001/OVERALL.NDS 2021-11-30 11:22:34 8192
MIB31_EUWO.UR5001/PACKAGE.CFG 2021-11-30 11:22:36 1871
MIB31_EUWO.UR5001/PRODUCT.NDS 2021-11-30 11:21:32 24576
MIB31_EUWO.UR5001/ROOT.NDS 2021-11-30 11:22:36 4096
PACKAGE.SLIST 2021-11-30 09:02:26 134858
Traceback (most recent call last):
File "\\DS216J-2\Download\Skoda\unzip.py", line 11, in <module>
zip.extractall('temp')
File "C:\Program Files\Python310\lib\zipfile.py", line 1645, in extractall
self._extract_member(zipinfo, path, pwd)
File "C:\Program Files\Python310\lib\zipfile.py", line 1698, in _extract_member
with self.open(member, pwd=pwd) as source, \
File "C:\Program Files\Python310\lib\zipfile.py", line 1571, in open
return ZipExtFile(zef_file, mode, zinfo, pwd, True)
File "C:\Program Files\Python310\lib\zipfile.py", line 800, in __init__
self._decompressor = _get_decompressor(self._compress_type)
File "C:\Program Files\Python310\lib\zipfile.py", line 699, in _get_decompressor
_check_compression(compress_type)
File "C:\Program Files\Python310\lib\zipfile.py", line 679, in _check_compression
raise NotImplementedError("That compression method is not supported")
NotImplementedError: That compression method is not supported


Erzeugt wurde im Dateisystem ein Verzeichnisbaum ohne jeglicher Dateien:
temp / MIB31_EU.ROOT / 3D


MfG
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Naja, die Fehlermeldung ist doch sehr eindeutige, oder? Das zip enthält Dateien komprimiert mit einem in Python nicht implementierten Verfahren. Geht also nicht. Entweder benutzt du also ein Kommandozeilen Tool (durch Python, mit subprocess), oder suchst nach einer 3rd party alternative. Vielleicht gibt’s da was.
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Anmerkung am Rande: Das ``zip.close`` am Ende bewirkt nichts, weil die `close()`-Methode gar nicht *aufgerufen* wird. Ist aber auch überflüssig, weil die ``with``-Anweisung ja schon dafür sorgt, dass am Ende des ``with``-Blocks die Datei geschlossen wird.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
bi3mw
User
Beiträge: 11
Registriert: Mittwoch 19. Oktober 2022, 23:14

Für Zip-Dateien gibt es ja die Möglichkeit die Datei in einzelne Teile zu splitten ( Datei.zip, Datei.01, Datei.02 usw.). Vielleicht wäre so ein mehrteiliges Archiv ja eine Option die funktionieren könnte oder muss es unbedingt nur eine Datei sein ? Bei Zip-Dateien gibt es, soweit ich weiß, tatsächlich Begrenzungen was die Größe des Archivs und die Anzahl der komprimierten Dateien angeht.
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@bi3mw: Das Problem ist hier weder die Grösse des Archivs noch einzelner Dateien im Archiv. Kann es ja auch gar nicht sein, denn dieses Archiv existiert ja bereits. Die Beschränkungen werden mit den ZIP64-Erweiterungen des Formats im Grunde auch aufgehoben. Und diese Erweiterung kann das `zipfile`-Modul. Praktisch dürfte es also unmöglich sein, dass zu viele Dateien oder zu grosse Dateien ein Problem darstellen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Codo
User
Beiträge: 8
Registriert: Montag 25. Oktober 2021, 19:25

Hallo,

vielen Dank an alle.

Genau, die Zip-Datei wurde gedownloaded und kann daher nicht in mehrere Teile gezippt werden.

Also werde ich wohl dem Hinweis mit subprocess folgen. Mal sehen, ob ich das schaffe. Warum Python aber nicht mit allen Kompressionsarten umgehen kann, wird mir ein Rätsel bleiben.

Ein schönes Wochenende an alle!
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

@Codo: Warum sollte Python das können? Du wirst auch mit einem beliebigen Programm ein 7zip File entpacken können.
Und wenn für das Zipfile mit einem Verfahren gepackt ist, das möglicherweise nicht frei verfügbar ist, wird das schwer.
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Codo: Das ist jetzt nicht wirklich mysteriös. Es hat halt noch keiner implementiert, entweder weil es eine sehr neue, oder eine eher exotische, oder eine lizenzrechtlich schwierigere Kompressionsart ist. Das Python-Modul kann den Originalalgorithmus (deflate), bzip2, und lzma.

Es gibt im Package Index ein paar Module die andere Kompressionsarten nachrüsten.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten