Gzlib decompression sucks :/ Hilfe ...

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
Scyks
User
Beiträge: 17
Registriert: Freitag 3. August 2007, 09:03

Sonntag 20. Januar 2008, 13:57

Hey Forum,

ein *.gz file zu entpacken ist nicht gerade das Problem aber wenn man etwas mehr will ist man mit GZ am Arsch.
Ähm also ich würde gerne beim entpacken des Archives einen Status ausgeben, wie weit schon entpackt wurde ... was aber anscheinened nicht funktioniert.

Ich kann zwar checken wie viel ich entpackt habe aber da ich nicht weiß wie groß die entpackte datei ist kann man damit nicht rechnen und die größe des gz als Rechenoperant zu nutzen liefert logischerweise falsche ergebnisse.

Hat jemand einen Ansatz wie man den Status der dekompression ausrechnen kann?


bin für jede Hilde dankbar ....
BlackJack

Sonntag 20. Januar 2008, 14:22

Die Grösse der entpackten Datei scheint scheint das `gzip`-Modul nicht zur Verfügung zu stellen.

Du könntest die Grösse der gepackten Datei benutzen und mit einem eigenen Datei-Objekt mitzählen wieviel davon schon gelesen wurde. `gzip.GzipFile()` kann man auch eigene Datei-Objekte als `fileobj`-Argument übergeben.
Scyks
User
Beiträge: 17
Registriert: Freitag 3. August 2007, 09:03

Sonntag 20. Januar 2008, 14:51

Das hatte ich alles auch schon probiert aber irgendwie gehts nicht, bzw ich bin zu blöd das zu verstehen :D

Habe eben nochmal mit nem Kollegen geredet, Problem ist gelöst:

Code: Alles auswählen

def getsize(gzipfile):
    import struct
    f = open(gzipfile, "rb")
    if f.read(2) != "\x1f\x8b":
        raise IOError("not a gzip file")
    f.seek(-4, 2)
    return struct.unpack("<i", f.read())[0]

usage:

>>> print getsize("Python-2.4a3.tgz")
Viel Spass :) und Danke trotzdem
Antworten