Arbeiten mit .tar.gz-Dateien

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
kdjantzen
User
Beiträge: 5
Registriert: Mittwoch 25. November 2015, 14:07

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.
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.
kdjantzen
User
Beiträge: 5
Registriert: Mittwoch 25. November 2015, 14:07

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?
Antworten