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"))
我正在探索文件压缩选项,并且对 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"))