我有一个大文本文件,主要由数字和一些分隔符等组成,|{}[]:
。我使用 Lempel-Ziv 编码进行压缩。我使用的代码不是我的,而是来自Rosetta代码的代码。我运行了逐行压缩的代码以及逐块压缩的代码:
def readChunk(file_object, size = 1024):
while True:
data = file_object.read(size)
if not data:
break
yield data
def readByChunk():
with open(LARGE_FILE, 'r') as f:
for data in readChunk(f, 2048):
compressed_chunk = compress(data)
compressed_chunk = map(lambda a : str(a), compressed_chunk)
comp_file.write(" ".join(compressed_chunk))
def readLineByLine():
with open(LARGE_FILE, 'r') as f:
lines = f.readlines()
for data in lines:
compressed_line = compress(data)
compressed_line = map(lambda a : str(a), compressed_line)
comp_file.write(" ".join(compressed_line))
这两个函数都输出一个比原始文件大得多的文件!!解压工作正常,即我能够取回原始文本,所以我认为代码是正确的。
我在保存文件时做错了什么?