저는 Python 2.7을 사용하고 있습니다. 나는 .bz2 파일을 가지고 있으며 실제로 압축을 풀지 않고도 구성 요소 파일의 압축되지 않은 파일 크기를 알아야합니다. gzip 및 tar 파일에서이 작업을 수행하는 방법을 찾았습니다. 누구든지 bz2 파일을위한 방법을 알고 있습니까?Python bz2 압축되지 않은 파일 크기
덕분에 매우
저는 Python 2.7을 사용하고 있습니다. 나는 .bz2 파일을 가지고 있으며 실제로 압축을 풀지 않고도 구성 요소 파일의 압축되지 않은 파일 크기를 알아야합니다. gzip 및 tar 파일에서이 작업을 수행하는 방법을 찾았습니다. 누구든지 bz2 파일을위한 방법을 알고 있습니까?Python bz2 압축되지 않은 파일 크기
덕분에 매우
난이 불가능하다 생각 : 자세한 내용은 링크 및 가능한 해결 방법을 참조하십시오. 여기 형식과 알고리즘 모두에 대한 설명이 있습니다. http://en.wikipedia.org/wiki/Bzip2#File_format
압축을 풀기 전까지는 원래의 데이터 크기를 알 수 없습니다.
실제로 그것을 압축 해제하지 않고 BZ2 파일의 크기를 말하는 것은 불가능하다 것으로 보인다. 때문에 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
청크 메소드를 시도하지는 않았지만 여기에 설명 된 seek() 및 tell() 메소드는 완벽하게 작동했습니다. – skrrgwasme
정말 감사합니다! – Nupur