Domanda

E 'possibile elencare il contenuto di un file LZMA (.7zip) senza decomprimere l'intero file? Inoltre, posso estrarre un singolo file dal file LZMA?

Il mio problema: ho un file da 30 GB .7z che decomprime a> 5 TB. Vorrei modificare il file .7z originale senza bisogno di fare un decomprimere completa.

È stato utile?

Soluzione

Sì. Inizia con XZ Utils . Ci sono Perl e Python API.

È possibile trovare il file che si desidera dalle intestazioni. Ogni file è compresso separatamente, in modo è possibile estrarre solo quello che si desidera.

Altri suggerimenti

Scarica lzma922.tar.bz2 dal LZMA SDK file di pagina su Sourceforge, quindi estrarre i file e aprire C / Util / 7z / 7zMain.c. Ci troverete le routine per estrarre un file di archivio specifica da un archivio .7z. Non è necessario estrarre tutti i dati da tutte le voci, l'esempio di codice viene illustrato come estrarre solo quello che interessa. Questo stesso codice ha una logica per elencare le voci senza estrarre tutti i dati compressi.

ho risolto il problema installando 7zip ( https://www.7-zip.org/) e utilizzando il parametro l. Ad esempio:

7z l file.7z

L'uscita ha alcune informazioni descrittive e l'elenco dei file nei file compressi. Poi, io chiamo questo all'interno di pitone utilizzando la libreria sottoprocesso:

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

Non dimenticare di assicurarsi che il programma 7z è accessibile nella variabile PATH. Ho dovuto farlo manualmente in Windows.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top