我正在查询数据库并使用 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
我尝试了 Python 的 gzip 编解码器(将行更改为codecs.open(archive_file, 'a+', 'zip')
),看看它是否解决了问题。我仍然得到大文件,但是gzip: archive_file: not in gzip format
当我尝试解压缩文件时也出现错误。 那里发生了什么事?
编辑:我最初以附加模式打开文件,而不是写入模式。虽然这可能是也可能不是问题,但如果文件以“w”模式打开,问题仍然存在。