跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • zlib compress 后 decompress 得不到原来的内容( Python 3.8)
未分類
30 10 月 2020

zlib compress 后 decompress 得不到原来的内容( Python 3.8)

zlib compress 后 decompress 得不到原来的内容( Python 3.8)

資深大佬 : wingkou 5

代码如下:

import zlib str1 = "1234567890" data1 = str1.encode() print(len(data1), data1.decode()) data2 = zlib.compressobj().compress(data1) data3 = zlib.decompressobj().decompress(data2) str2 = data3.decode() print(len(str2), str2) 

我这里输出的是:

10 1234567890 0 

为什么会这样的呢?

大佬有話說 (4)

  • 資深大佬 : lcdtyph

    (de)compressobj()返回的对象是有状态的,主要用来处理流数据,在输入结束之后要调用 obj.flush() 来接收最后一段输出

    如果是一次性压缩解压可以直接调用 zlib.compress 。如果一定要用(de)compressobj 可以这样:
    cobj = zlib.compressobj()
    dobj = zlib.decmpressobj()

    data2 = cobj.compress(data1)
    data2 += cobj.flush()

    data3 = dobj.decompress(data2)
    data3 += dobj.flush()

  • 主 資深大佬 : wingkou

    @lcdtyph 感谢,因为有个文件直接`zlib.compress`会报错,但是`zlib.decmpressobj().decompress()`却不会,才搞的这种写法。这问题也 Google 不到,大半夜还搞得焦头烂额的。不知道你知道有什么区别吗?

  • 主 資深大佬 : wingkou

    @lcdtyph 上面打快了,应该是`zlib.decompress()`会报错,但是`zlib.decmpressobj().decompress()`却不会。

  • 資深大佬 : owtotwo

    建议把报错的 minimum 文件样例也列出来,不然不好复现

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具