Ошибка при использовании функции zlib.compress в Python 3.2 - PullRequest
0 голосов
/ 30 января 2012

Я импортирую zlib в мою программу на Python.Он отлично работает в Python 2.6, но выдает ошибку при попытке запустить его в Python 3.2.

Это мой код:

import zlib
s = 'sam'
print ("Your string length is",len(s))
t = zlib.compress(s)
print ("Your compressed string is",t)
print ("Your compressed string length is",len(t))
print ("Your decompressed string is",zlib.decompress(t))
print ("Crc32 is",zlib.crc32(t))

Я получаю следующую ошибку:

Your string length is 3
Traceback (most recent call last):
  File "F:\workspace\samples\python\zip.py", line 4, in <module>
    t = zlib.compress(s)
TypeError: 'str' does not support the buffer interface

Но вышеуказанная программа прекрасно работает в Python 2.6.Должен ли я использовать альтернативу zlib?Пожалуйста, помогите мне.

Редактировать : Я получил его на работу.Кажется, мне нужно было его кодировать.Вот исправленный код:

import zlib
s = 'sam'
print ("Your string length is",len(s))
s=s.encode('utf-8')
t = zlib.compress(s)
print ("Your compressed string is",t)
print ("Your compressed string length is",len(t))
print ("Your decompressed string is",zlib.decompress(t))
print ("Crc32 is",zlib.crc32(t))

1 Ответ

4 голосов
/ 30 января 2012
Тип

Th str в Python больше не является последовательностью 8-битных символов, а является последовательностью символов Uncode. Вам необходимо использовать тип bytes для двоичных данных. Вы конвертируете между строками и байтами кодированием / декодированием.

...