2012-09-28 5 views
1

저는 Python 2.7을 사용하고 있습니다. 나는 .bz2 파일을 가지고 있으며 실제로 압축을 풀지 않고도 구성 요소 파일의 압축되지 않은 파일 크기를 알아야합니다. gzip 및 tar 파일에서이 작업을 수행하는 방법을 찾았습니다. 누구든지 bz2 파일을위한 방법을 알고 있습니까?Python bz2 압축되지 않은 파일 크기

덕분에 매우

답변

2

난이 불가능하다 생각 : 자세한 내용은 링크 및 가능한 해결 방법을 참조하십시오. 여기 형식과 알고리즘 모두에 대한 설명이 있습니다. 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

청크 메소드를 시도하지는 않았지만 여기에 설명 된 seek() 및 tell() 메소드는 완벽하게 작동했습니다. – skrrgwasme

관련 문제