如何确定bzip2的压缩级别?

时间:2018-01-27 15:12:24

标签: python bigdata bzip2

我有大量的bzip2压缩文本文件。未压缩,其中一些占用几GB,所以我想在我的脚本中使用压缩版本,而不是让未压缩版本占用磁盘空间。在这种情况下,由此引起的性能影响是可以接受的。

不幸的是,这些文件是用不同的压缩级别压缩的,所以当迭代它们时,我最终会遇到错误:

File "/usr/lib64/python3.6/bz2.py", line 219, in readline
    return self._buffer.readline(size)
  File "/usr/lib64/python3.6/_compression.py", line 68, in readinto
    data = self.read(len(byte_view))
  File "/usr/lib64/python3.6/_compression.py", line 103, in read
    data = self._decompressor.decompress(rawblock, size)
OSError: Invalid data stream

我认为这是因为bz2.open()接受了一个参数compresslevel,一旦设置,就会应用于这样的调用中的所有文件:

import bz2

dataset = ['first-archive.bz2', 'second-archive.bz2']

for file in dataset:
    with bz2.open(file, 'r', compresslevel=9) as f:
        # do stuff to f

因此我的问题是:是否有可能使用Python或Unix工具来计算创建bzip2-archive时使用的压缩级别?

0 个答案:

没有答案