Tarfile in Tarfile transparent entpacken

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.
pythongenuser
User
Beiträge: 9
Registriert: Donnerstag 16. August 2007, 11:19

Tarfile in Tarfile transparent entpacken

Beitragvon pythongenuser » Mittwoch 21. November 2007, 14:56

Hallo,

ich habe tar.gz-Archive, in denen tgz-Files gepackt sind.
Jetzt wurde ich diese gerne automatisch auswerten, ohne jedes mal erst alle tar.gz-Archive zu entpacken.
Leider funktioniert aber

Code: Alles auswählen

import tarfile
t = tarfile.open(somefile.tar.gz)
tt = tarfile.open(t.getnames()[0])

nicht (Das erste File in jedem tar.gz-Archiv ist das tgz-File).

Geht das irgendwie anders?
Was ist eine Alternative?

Gruss
lunar

Re: Tarfile in Tarfile transparent entpacken

Beitragvon lunar » Freitag 23. November 2007, 19:43

pythongenuser hat geschrieben:Hallo,

ich habe tar.gz-Archive, in denen tgz-Files gepackt sind.
Jetzt wurde ich diese gerne automatisch auswerten, ohne jedes mal erst alle tar.gz-Archive zu entpacken.

Und wie soll das praktisch ablaufen? Das "innere" Archiv ist durch die Kompression des äußeren Archivs "verstümmelt", d.h. als tar unlesbar. Man muss es also notwendigerweise erstmal entpacken, bevor man es als tarfile lesen kann...
pythongenuser
User
Beiträge: 9
Registriert: Donnerstag 16. August 2007, 11:19

Beitragvon pythongenuser » Sonntag 25. November 2007, 19:22

Naja, ich kann ja transparent entpacken als ein FileLikeObject. Leider kann ich dieses nicht mit

Code: Alles auswählen

tarfile.open(FileLikeObject)


öffnen. Gibt es andere Archivverwalter, mit denen das geht?
pythongenuser
User
Beiträge: 9
Registriert: Donnerstag 16. August 2007, 11:19

Beitragvon pythongenuser » Montag 10. Dezember 2007, 14:03

Immer noch keine Ideen?
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 10. Dezember 2007, 14:29

Ich würde mir da keinen so größen Kopf drum machen.
Einfach das tempfile modul nehmen den kram entpacken, das entpackte öffnen und anschließend alle temporären daten wieder wegschmeißen. Warum muss das ganze direkt im Speicher passieren?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 10. Dezember 2007, 19:44

Schnellschuss: Man könnte es auch in ein (c)StringIO-Objekt entpacken und von dort wieder laden.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
pythongenuser
User
Beiträge: 9
Registriert: Donnerstag 16. August 2007, 11:19

Beitragvon pythongenuser » Donnerstag 20. Dezember 2007, 12:47

@ zap und lenonidas

Danke für die Antworten, gibt eine andere Möglichkeit:

Code: Alles auswählen

t = tarfile.open('file.tar.gz')
names = t.getnames()
tt = t.extractfile(names[0])  #<-- ist das file.tgz
ttt = tarfile.open('', fileobj=tt)


Hatte ich übersehen, dass die open-Methode diese Option bietet.
Schönen Gruß

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder