我正在使用Python 2.7。我有一個.bz2文件,我需要找出其組件文件的未壓縮文件大小,而不實際解壓縮它。 我已經找到了解決gzip和tar文件的方法。任何人都知道bz2文件的方式?Python bz2未壓縮文件大小
非常感謝
我正在使用Python 2.7。我有一個.bz2文件,我需要找出其組件文件的未壓縮文件大小,而不實際解壓縮它。 我已經找到了解決gzip和tar文件的方法。任何人都知道bz2文件的方式?Python bz2未壓縮文件大小
非常感謝
我懷疑這是不可能的,因爲BZ2格式的性質和它使用的壓縮技術。這裏有一個很好的描述格式和算法http://en.wikipedia.org/wiki/Bzip2#File_format
你永遠不會知道原始數據的大小,直到你解壓縮它。
似乎告訴BZ2文件的大小,而不實際解壓縮是不可能的。查看鏈接以更多的細節和可能的解決方案: https://superuser.com/questions/53984/is-there-a-way-to-determine-the-decompressed-size-of-a-bz2-file
正如其他答案所述,這是不可能的,沒有解壓縮數據。然而,如果解壓縮數據的尺寸較大,這可以通過在塊解壓縮,並添加塊的大小進行:
>>> 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()方法在這裏描述的完美。 – skrrgwasme
非常感謝! – Nupur