Python:无法使用gzip

时间:2018-07-02 11:19:10

标签: python compression gzip

我正在探索文件压缩选项,并且对Python中gzip模块的行为感到困惑。我可以这样写一个gzip压缩文件:

with gzip.open('test.txt.gz', 'wb') as out:
 for i in range(100):
  out.write(bytes(i))

但是如果我随后运行gunzip test.txt.gz,则输出(test.txt)仍然是二进制的。我想念什么?

2 个答案:

答案 0 :(得分:0)

啊,这在Python 2.7中可以正常工作:

import gzip

with gzip.open('test.txt.gz', 'wb') as out:
 for i in range(100):
  out.write(bytes(i))

在Python 3中,我们必须这样做:

import io, gzip

with gzip.open('test.txt.gz', 'wb') as output:
  with io.TextIOWrapper(output, encoding='utf-8') as writer:
    for i in range(100):
      writer.write(str(i))

答案 1 :(得分:0)

虽然您发布的2.7代码可以正常工作,但针对3.X修复此问题的简单方法是:

import gzip

with gzip.open('test.txt.gz', 'wb') as out:
 for i in range(100):
  out.write(str(i).encode("utf-8"))