Сжатие больших файлов с помощью python
Я хочу сжать большие текстовые файлы с помощью python (я говорю о файлах >20Gb). Я не эксперт, поэтому я попытался собрать информацию, которую нашел, и, похоже, работает следующее:
import bz2
with open('bigInputfile.txt', 'rb') as input:
with bz2.BZ2File('bigInputfile.txt.bz2', 'wb', compresslevel = 9) as output:
while True:
block = input.read(900000)
if not block:
break
output.write(block)
input.close()
output.close()
Мне интересно, правильный ли этот синтаксис и есть ли способ его оптимизировать ? У меня такое впечатление, что я что-то упускаю.
большое спасибо.
2 ответов
ваш скрипт кажется правильным, но может быть сокращен:
from shutil import copyfileobj
with open('bigInputfile.txt', 'rb') as input:
with bz2.BZ2File('bigInputfile.txt.bz2', 'wb', compresslevel=9) as output:
copyfileobj(input, output)