def compress_file(self):
# stream-compress to another file then overwrite original
self.file = open(self.filename, 'rb')
compressed_filename = '%s.zlib' % self.filename
compressed_file = open(compressed_filename, 'wb')
compressor = zlib.compressobj(self.compression_level)
compressed_file.write(struct.pack('>I', os.stat(self.filename).st_size))
data = self.file.read(READ_AMOUNT)
while len(data) > 0:
compressed_file.write(compressor.compress(data))
data = self.file.read(READ_AMOUNT)
compressed_file.write(compressor.flush(zlib.Z_FINISH))
self.file.close()
compressed_file.close()
os.rename(compressed_filename, self.filename)
评论列表
文章目录