Ответ 1
LZMA и 7z - два совершенно разных зверя.
Проще говоря, LZMA - это алгоритм сжатия без потерь. Это означает, что если вы передадите LZMA некоторые данные, они будут сжаты и предоставят вам вывод. У него нет смысла в файлах, папках или как их хранить.
7z - это формат файла архива, а это значит, что 7z - это полный пакет. У вас есть несколько файлов и папок, подайте его в 7z, он аккуратно сожмет их и сохранит в одном файле (архиве). Обратите внимание, что 7z использует LZMA и набор других алгоритмов для сжатия и хранения файлов в своем архивном файле 7z.
Вот что Википедия может сказать о двух:
7z - это сжатый формат файла архива, который поддерживает несколько различных алгоритмов сжатия, шифрования и предварительной обработки данных.
Цепной алгоритм Лемпеля – Зива – Маркова (LZMA) - это алгоритм, используемый для сжатия данных без потерь. Он разрабатывался с 1996 или 1998 года 3 и впервые использовался в формате 7z 7-Zip-архиватора.
Короче говоря, вы не можете использовать lzma для создания или извлечения файлов 7z. Насколько я знаю, нет никакого способа извлечь файл 7z, используя python, кроме: Смотрите обновление ниже.
import os
os.system( '7z x archive.7z -oPath/to/Name' )
Обновление: май 2019
Поскольку есть некоторый интерес к извлечению файлов 7z
в python, я подумал, что обновление в порядке. Начиная с 2019 года (возможно, даже раньше), привязки libarchive для python поддерживают формат 7z
. Пример извлечения файлов из архива 7z приведен в ссылке выше.