Python 2.7: сжатие данных в формате XZ с помощью модуля «lzma»

Я экспериментирую с модулем lzma в Python 2.7.6, чтобы посмотреть, смогу ли я создать сжатые файлы, используя формат XZ для будущего проекта, который будет использовать его. Мой код, используемый во время эксперимента, был:

import lzma as xz

in_file = open('/home/ki2ne/Desktop/song.wav', 'rb')
input_data = in_file.read()

compressed_data = xz.compress(input_data)
out_file = open('/home/ki2ne/Desktop/song.wav.xz', 'wb')
in_file.close()
out_file.close()

и я заметил, что в результирующем файле были две разные контрольные суммы (MD5 и SHA256) по сравнению с тем, когда я использовал обычный xz (хотя я мог распаковать нормально любым способом - контрольные суммы распакованных версий обоих файлов были одинаковыми). Будет ли это проблемой?

ОБНОВИТЬ: Я нашел решение для этого, установив backport (из Python 3.3) через Git-репозиторий peterjc (ссылка здесь), и теперь он показывает идентичные контрольные суммы. Не уверен, поможет ли это, но я убедился, что модуль Python LZMA в моем репозитории не был установлен, чтобы избежать возможных конфликтов имен.

Вот мой тестовый код, чтобы подтвердить это:

# I have created two identical text files with some random phrases

from subprocess import call
from hashlib import sha256
from backports import lzma as xz

f2 = open("test2.txt" , 'rb')
f2_buf = buffer(f2.read())
call(["xz", "test1.txt"])

f2_xzbuf = buffer(xz.compress(f2_buf))
f1 = open("test1.txt.xz", 'rb')
f1_xzbuf = buffer(f1.read())

f1.close(); f2.close()

f1sum = sha256(); f2sum = sha256()

f1sum.update(f1_xzbuf); f2sum.update(f2_xzbuf)

if f1sum.hexdigest() == f2sum.hexdigest():
    print "Checksums OK"
else:
    print "Checksum Error"

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

Ответы на вопрос(2)

Ваш ответ на вопрос