Я запрашиваю базу данных и архивирую результаты с помощью Python, и я пытаюсь сжимать данные, когда записываю их в файлы журнала. Однако у меня с этим возникли проблемы.
Мой код выглядит так:
log_file = codecs.open(archive_file, 'w', 'bz2')
for id, f1, f2, f3 in cursor:
log_file.write('%s %s %s %s\n' % (id, f1 or 'NULL', f2 or 'NULL', f3))
Однако мой выходной файл имеет размер 1 409 780. Запуск bunzip2
в файле приводит к созданию файла размером 943 634, а запуск bzip2
в результате дает размер 217 275. Другими словами, несжатый файл значительно меньше, чем файл, сжатый с использованием кодека Python bzip. Есть ли способ исправить это, кроме запуска bzip2
в командной строке?
Я попробовал кодек gzip Python (изменив строку на codecs.open (archive_file, 'a + ',' zip ')
), чтобы проверить, решила ли она проблему. Я все еще получаю большие файлы, но я также получаю ошибку gzip: archive_file: not in gzip format
, когда пытаюсь распаковать файл. Что там происходит?
РЕДАКТИРОВАТЬ : Изначально файл был открыт в режиме добавления, а не записи. Хотя это может быть, а может и не быть проблемой, вопрос все еще остается открытым, если файл открыт в режиме 'w'.