在Python 3.2中使用zlib.compress函数时出错

时间:2012-01-30 09:32:36

标签: python-3.x zlib

我在Python程序中导入zlib。它在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 个答案:

答案 0 :(得分:4)

Python中的str类型不再是8位字符序列,而是一系列Uncode字符。您需要将bytes类型用于二进制数据。您可以通过编码/解码在字符串和字节之间进行转换。