Seite 1 von 1

Arbeiten mit .tar.gz-Dateien

Verfasst: Mittwoch 25. November 2015, 14:44
von kdjantzen
Hallo,

ich moechte Dateien in .tar.gz-Dateien archivieren und versuche das mit folgendem Script:

Code: Alles auswählen

with tarfile.open("texte.tar.gz", "w:gz") as f:
    f.add("file1.txt")
    f.close()

with tarfile.open("texte.tar.gz", "a:") as f:
    f.add("file2.txt")
    f.close()


Das geht nicht: liefert "truncated Header"-Fehler. OK

Wenn ich versuche, die .tar.gz-Datei erst zu dekomprimieren, dann eine weitere Datei hinzufuegen,
um dann die .tar-Datei wieder zu komprimieren, komme ich auch nicht weiter:

Code: Alles auswählen

with tarfile.open("texte.tar.gz", "w:gz") as f:
    f.add("file1.txt")
    f.close()
#     
F = gzip.open("texte.tar.gz", "rb")
print(type(F))
T = F.read()
print(type(T))
with tarfile.open(T, "a:") as f:
    f.add("file2.txt")
    f.close
"T" wird, wahrscheinlich verstaendlich, nicht als .tar-Datei erkannt; liefert eine Fehler beim "open".

Hat jemand einen Tipp?
Vielen Dank im Voraus.

K.D.J.

Re: Arbeiten mit .tar.gz-Dateien

Verfasst: Mittwoch 25. November 2015, 14:47
von BlackJack
@kdjantzen: Anhängen an komprimierte TAR-Archive geht schlicht nicht effizient. Man müsste dafür erst das bestehende Archiv dekomprimieren, zusätzliche Dateien anhängen, und dann neu komprimieren.

Edit: `f.close()` ist überflüssig — dafür ist ja das ``with`` da.

Re: Arbeiten mit .tar.gz-Dateien

Verfasst: Mittwoch 25. November 2015, 19:34
von kdjantzen
Das ist genau mein Problem.
Ich kann zwar das komprimierte Archiv dekomprimieren, aber die dadurch entstandene Datei
wird nicht ohne Weiteres als Archiv verstanden.

Gibt es so etwas wie coersion nach TarFile?