Python: 无法使用 gzip 压缩文件

Python: Cannot gunzip file made with gzip

我正在探索文件压缩选项,并且对 Python 中 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) 仍然是二进制的。我错过了什么?

啊,这在 Python 2.7:

中正常工作
import gzip

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

在Python3中,我们要做的是:

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))

虽然您为 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"))