Python bz2 sin comprimir tamaño de archivo

Estoy usando Python 2.7. Tengo un archivo .bz2, y necesito averiguar el tamaño del archivo no comprimido de su archivo componente sin descomprimirlo realmente. He encontrado maneras de hacer esto para los archivos gzip y tar. Alguien sabe de una manera para archivos bz2?

Muchas gracias

Sospecho que esto es imposible debido a la naturaleza del formato bz2 y las técnicas de compresión que utiliza. Aquí hay una descripción bastante buena del formato y los algoritmos http://en.wikipedia.org/wiki/Bzip2#File_format

Nunca sabrás el tamaño de los datos originales hasta que lo descomprimas.

Como han indicado las otras respuestas, esto no es posible sin descomprimir los datos. Sin embargo, si el tamaño de los datos descomprimidos es grande, esto se puede hacer descomprimiéndolo en trozos y agregando el tamaño de los trozos:

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

Alternativamente (y probablemente más rápido, aunque no haya perfilado esto) puede seek() hasta el final del archivo y luego usar tell() para averiguar cuánto tiempo dura:

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

Parece que decir el tamaño del archivo bz2 sin descomprimirlo es imposible. Vea el enlace para obtener más detalles y una posible solución: https://superuser.com/questions/53984/is-there-a-way-to-determine-the-decompressed-size-of-a-bz2-file