Python bz2未压缩文件大小

Python bz2未压缩文件大小,python,compression,Python,Compression,我正在使用Python 2.7。我有一个.bz2文件,我需要计算出它的组件文件的未压缩文件大小,而不需要实际解压缩它。 我已经找到了为gzip和tar文件执行此操作的方法。有人知道bz2文件的方法吗 非常感谢似乎在不实际解压缩的情况下说出bz2文件的大小是不可能的。有关更多详细信息和可能的解决方案,请参阅链接: 我怀疑这是不可能的,因为bz2格式的性质及其使用的压缩技术。这里对格式和算法都有很好的描述 在解压之前,您永远不会知道原始数据的大小 正如其他答案所述,如果不解压缩数据,这是不可能的。但

我正在使用Python 2.7。我有一个.bz2文件,我需要计算出它的组件文件的未压缩文件大小,而不需要实际解压缩它。 我已经找到了为gzip和tar文件执行此操作的方法。有人知道bz2文件的方法吗


非常感谢

似乎在不实际解压缩的情况下说出bz2文件的大小是不可能的。有关更多详细信息和可能的解决方案,请参阅链接:

我怀疑这是不可能的,因为bz2格式的性质及其使用的压缩技术。这里对格式和算法都有很好的描述


在解压之前,您永远不会知道原始数据的大小

正如其他答案所述,如果不解压缩数据,这是不可能的。但是,如果解压数据的大小很大,可以通过将其解压成块并添加块的大小来实现:

>>> import bz2
>>> with bz2.BZ2File('data.bz2', 'r') as data:
...     size = 0
...     chunk = data.read(1024)
...     while chunk:
...         size += len(chunk)
...         chunk = data.read(1024)
... 
>>> size
11107
或者(可能更快,尽管我没有对此进行分析),您可以
seek()
到文件的末尾,然后使用
tell()
找出它的长度:

>>> import bz2
>>> import os
>>> with bz2.BZ2File('data.bz2', 'r') as data:
...     data.seek(0, os.SEEK_END)
...     size = data.tell()
...
>>> size
11107L

我没有尝试chunk方法,但是这里描述的seek()和tell()方法非常有效。我在第二种方法上使用
seek()
&
tell()
对未压缩大小约为1.2G的文件进行了测试。似乎解压文件和计算花费时间的大小没有太大区别。