2012-09-28 133 views
1

我正在使用Python 2.7。我有一個.bz2文件,我需要找出其組件文件的未壓縮文件大小,而不實際解壓縮它。 我已經找到了解決gzip和tar文件的方法。任何人都知道bz2文件的方式?Python bz2未壓縮文件大小

非常感謝

回答

2

我懷疑這是不可能的,因爲BZ2格式的性質和它使用的壓縮技術。這裏有一個很好的描述格式和算法http://en.wikipedia.org/wiki/Bzip2#File_format

你永遠不會知道原始數據的大小,直到你解壓縮它。

+0

非常感謝! – Nupur

4

正如其他答案所述,這是不可能的,沒有解壓縮數據。然而,如果解壓縮數據的尺寸較大,這可以通過在塊解壓縮,並添加塊的大小進行:

>>> 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 
+0

我沒有嘗試chunk方法,但seek()&tell()方法在這裏描述的完美。 – skrrgwasme

相關問題