Frage

Ist es möglich, den Inhalt einer LZMA-Datei zur Liste (.7zip), ohne die gesamte Datei zu dekomprimieren? Außerdem kann ich eine einzelne Datei aus der LZMA-Datei extrahieren?

Mein Problem: Ich habe eine 30GB .7z Datei, die dekomprimiert auf> 5 TB. Ich möchte die ursprüngliche .7z Datei manipulieren, ohne dass eine vollständige dekomprimieren zu tun.

War es hilfreich?

Lösung

Ja. Beginnen Sie mit XZ Utils . Es gibt Perl und Python-APIs.

Hier finden Sie die Datei, die Sie aus den Header möchten. Jede Datei wird separat komprimiert, so dass Sie nur den einen extrahieren können Sie wollen.

Andere Tipps

Download lzma922.tar.bz2 von der LZMA SDK-Dateien Seite auf Source, dann die Dateien extrahieren und C / util / 7z / 7zMain.c eröffnen. Dort finden Sie Routinen finden eine bestimmte Archivdatei aus einem .7z Archiv zu extrahieren. Sie müssen nicht alle Daten aus alle Einträge, die Beispielcode zeigt, wie zu extrahieren nur die, die Sie interessieren. Diese gleichen Code Logik extrahieren müssen hat die Einträge aufzulisten, ohne dass alle die komprimierten Daten zu extrahieren.

Ich löste dieses Problem durch die Installation von 7zip ( https://www.7-zip.org/) und mit dem Parameter l. Zum Beispiel:

7z l file.7z

Der Ausgang hat einige beschreibenden Informationen und die Liste der Dateien in den komprimierten Dateien. Dann habe ich diese in Python rufen Sie die subprocess Bibliothek:

import subprocess
output = subprocess.Popen(["7z","l", "file.7z"], stdout=subprocess.PIPE)
output = output.stdout.read().decode("utf-8")

Vergessen Sie nicht, dass das Programm zu machen 7z in Ihrem PATH-Variable zugänglich ist. Ich hatte dies in Windows manuell zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top