У меня есть большой текстовый файл, который в основном состоит из чисел и некоторых разделителей, таких как ,|{}[]:
и т. Д. Я использовал кодировку 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))
Обе функции вывода файла, который намного больше, чем исходный файл !! Декомпрессия работает отлично, то есть я могу вернуть исходный текст, поэтому считаю, что код верен.
Я делаю что-то неправильно в сохранении файла?
- контент довольно случайный или содержит явные шаблоны? – 101
Нет никаких очевидных шаблонов! Просто много чисел, разделенных символами ',' s и '|' s. –