Перечисление содержимого сжатого файла LZMA?

StackOverflow https://stackoverflow.com/questions/2628883

  •  26-09-2019
  •  | 
  •  

Вопрос

Можно ли перечислить содержимое файла LZMA (.7zip), не сопротивляя весь файл? Кроме того, я могу извлечь один файл из файла lzma?

Моя проблема: у меня есть файл 30 ГБ .7z, который неспаривается на> 5TB. Я хотел бы манипулировать оригинальным файлом .7z, не требуя полного расщепления.

Это было полезно?

Решение

Да. Начать с XZ Utils.. Отказ Есть Perl и Python API.

Вы можете найти файл, который вы хотите от заголовков. Каждый файл сжимается отдельно, поэтому вы можете извлечь только тот, который вы хотите.

Другие советы

Скачайте lzma922.tar.bz2 с страницы файлов LZMA SDK на SourceForge, затем извлеките файлы и откройте C / UTIL / 7Z / 7ZMAIN.C. Там вы найдете процедуры для извлечения определенного файла архива из архива .7z. Вам не нужно извлекать все данные из всех записей, пример код показывает, как извлечь только тот, который вас интересует. Этот же код имеет логику для перечисления записей без извлечения всех сжатых данных.

Я решил эту проблему, устанавливая 7ZIP (https://www.7-zip.org/) и используя параметр л. Например:

7z l file.7z

Вывод имеет некоторую описательную информацию и список файлов в сжатых файлах. Затем я называю это внутри Python, используя библиотеку подпроцесс:

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

Не забудьте убедиться, что программа 7Z доступна в вашей переменной пути. Я должен был сделать это вручную в окнах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top