압축 된 내용과 32 바이트 헤더로 구성된 파일이 있습니다. 헤더에는 타임 스탬프, 압축 된 크기 및 압축되지 않은 크기와 같은 정보가 들어 있습니다.zlib가 X 바이트 이상 압축을 풀지 않게하는 방법은 무엇입니까?
파일 자체는 약 490MB이고 압축되지 않은 크기는 2.7GB에 가깝다는 것을 나타내는 헤더가 있습니다 (압축 된 크기가 752MB라고 믿기 때문에 분명히 잘못되었습니다).
헤더를 제거하고 압축 된 페이로드를 생성했으며 zlib로 압축을 풀 수 있습니다.
문제는 단지 19kb를 압축 해제하는 것인데, 490mb보다 훨씬 작습니다 (최소한 압축해야하지만, 압축되지 않은 상태로 약 700mb가 필요합니다).
내 코드는 다음과 같습니다 :
import zlib
def consume (inputFile):
content = inputFile.read()
print "Attempting to process " + str(len(content)) + " bytes..."
outfile = open('output.xml', 'w')
inputFile = zlib.decompress(content)
print "Attempting to write " + str(len(inputFile)) + " bytes..."
outfile.write(inputFile)
outfile.close()
infile = open('payload', 'rb')
consume(infile)
infile.close()
실행
프로그램 출력 :489,987,232 바이트를 처리하기 위해 시도... 18,602 바이트를 작성하려고 ...
나는 잘못된 헤더 경고를 생성하지만 zlib.decompressionobj()
을 사용하려고했습니다. zlib.decompress()
잘 작동하고 내가 예상했던 압축 해제 된 XML을 생성합니다 ... 너무 적습니다.
모든 의견이나 제안을 보내 주시면 대단히 감사하겠습니다.
파일의 출처는 어디입니까? 필요에 따라 다시 다운로드하거나 이전 버전으로 롤백하거나 백업에서 복원 할 수 있습니까? – abarnert
Th 파일은 그 내용에 대한 격렬한 설명에서 분명히 손상된 것으로 들립니다. – nneonneo
@abarnert 파일은 파트너 사 (dropbox 이상)에서 제공했습니다. 나는 다른 것을 얻고 그것을 시도 할 수 있습니다. 포인터를 주셔서 감사합니다 - 내 코드 또는 메서드가 잘못되었다고 가정하고 있었지만, 큰 도움이 될 파일로 판명되면! – jscarto