Question

Est-il possible de lister le contenu d'un fichier LZMA (de .7zip) sans décompressé le fichier entier? Aussi, puis-je extraire un seul fichier à partir du fichier LZMA?

Mon problème: J'ai un fichier de 30Go qui décompresse à> 5TB. Je voudrais manipuler le fichier .7z d'origine sans avoir besoin de faire une Décompresser complète.

Était-ce utile?

La solution

Oui. Commencez par XZ Utils . Il existe des API Perl et Python.

Vous pouvez trouver le fichier que vous voulez dans les en-têtes. Chaque fichier est compressé séparément, de sorte que vous pouvez extraire simplement celui que vous voulez.

Autres conseils

Télécharger lzma922.tar.bz2 à partir des fichiers SDK LZMA page sur Sourceforge, puis extraire les fichiers et ouvrir C / util / 7z / 7zMain.c. Là, vous trouverez des routines pour extraire un fichier d'archive spécifique à partir d'une archive .7z. Vous n'avez pas besoin d'extraire toutes les données de toutes les entrées, les émissions de code exemple comment extraire simplement celui qui vous intéresse. Ce même code a une logique à la liste des entrées sans extraire toutes les données compressées.

Je résolu ce problème en installant 7zip ( https://www.7-zip.org/) et en utilisant le paramètre l. Par exemple:

7z l file.7z

La sortie a des renseignements descriptifs et la liste des fichiers dans les fichiers compressés. Ensuite, j'appelle ce python intérieur en utilisant la bibliothèque de sous-processus:

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

Ne pas oublier de vous assurer que le programme 7z est accessible dans votre variable PATH. Je devais le faire manuellement dans Windows.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top