2013-09-18 3 views
5

Мне нужно часто искать через пару файлов с размером .7z (zipped with LZMA). У меня недостаточно памяти для их распаковки в одно и то же время или для изменения архива на .gz. На данный момент я распаковываю один, ища то, что мне нужно, удаляет извлеченное, распаковывает следующий. Я хочу, чтобы пройти через архивы точно так же, как и с помощью Gzip:Есть ли эквивалент gzip.open() для .7z файлов?

f = gzip.open('archive.gz') 
for i in f: 
    do stuff 

Есть ли модуль/способ сделать это с .7z файлов?

+1

К сожалению, нет модуля, который обрабатывает файлы 7z. Вы можете использовать модуль 'subprocess' для получения вывода из 7z и обрабатывать его по своему усмотрению:' subprocess.getoutput ('7z l archive.7z') ' – Marcus

ответ

5

Там находится встроенный модуль в Python> = 3,3: http://docs.python.org/3.3/library/lzma

И есть также портировать модуля на PyPI: https://pypi.python.org/pypi/backports.lzma

(Если вы на Windows, и вы не Не хотите скомпилировать его самостоятельно, вы можете использовать пакет PyLZMA от Unofficial Windows Binaries for Python).

+2

обратите внимание, что хотя 7z использует LZMA как свою рабочую лошадь для выполнения сжатие, 7z и LZMA - это не одно и то же. Я подробно объяснил это в [этом сообщении] (http://stackoverflow.com/a/36093803/1233513) – Marcus

Смежные вопросы