我正在探索文件压缩选项,并且对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
)仍然是二进制的。我想念什么?
答案 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"))