Декомпрессия с помощью PyLZMA

Я сжимаю свои файлы, используя этот скрипт

import pylzma, struct i = open(path+fileName,'rb') o = open(path+zipName+'.zip','wb') data = i.read() c = pylzma.compressfile(data, eos=1) result = c.read(5) result += struct.pack('<Q', len(data)) o.write(result + c.read()) i.close() o.close() 

Я использую этот метод, как показано в документации PyLZMA, поскольку он позволяет читать мои файлы с помощью 7zip или lzma.exe. Декомпрессия с использованием 7zip отлично работает, но не работает, когда я использую PyLZMA. Я использую это:

 i = open(path+name+'.zip', 'rb') o = open(path+name, 'wb') data = i.read() u = pylzma.decompress(data) o.write(u) 

Он останавливается на pylzma.decompress, и я получаю следующую ошибку:

ТипError: ошибка при распаковке: 1

Если я правильно читаю документацию (у меня возникли проблемы с установкой PyLZMA, поэтому я не могу проверить), compress() выводит строку, которую может обрабатывать функция decompress() .

Однако, чтобы сжатая строка была совместима с другими утилитами, необходимо вставить длину в 8 байтов между первыми 5 байтами и остальными сжатыми данными.

Таким образом, если вы хотите распаковать данные с помощью PyLZMA, я подозреваю, что вам нужно будет вручную удалить это поле длиной в 8 байтов (самым быстрым способом было бы, вероятно, открыть входной файл, прочитать 5 байтов, пропустить 8, а затем прочитать оставшуюся часть файл).