Chilkat2-Python
Chilkat2-Python
Transition from Compression.BeginCompressBytes to FirstChunk/LastChunk
Provides instructions for replacing deprecated BeginCompressBytes method calls with using FirstChunk and LastChunk properties.Chilkat Chilkat2-Python Downloads
import sys
import chilkat2
success = False
facSrc = chilkat2.FileAccess()
facDest = chilkat2.FileAccess()
# Open a large binary file for reading.
success = facSrc.OpenForRead("qa_data/bmp/big.bmp")
if (success == False):
print(facSrc.LastErrorText)
sys.exit()
# If we compress in 64K chunks, find out how many blocks there will be.
blockSize = 65536
numBlocks = facSrc.GetNumBlocks(blockSize)
# Open an output file for the compressed data.
success = facDest.OpenForWrite("c:/temp/qa_output/compressedBmp.dat")
if (success == False):
print(facDest.LastErrorText)
sys.exit()
compress = chilkat2.Compression()
compress.Algorithm = "deflate"
# ----------------------------------------------------------------------------------
# This is the deprecated way of compressing in chunks using Begin/More/End methods..
# ----------------------------------------------------------------------------------
i = 0
while i < numBlocks :
# fileBytes is a memoryview
fileBytes = facSrc.ReadBlock(i,blockSize)
if (i == 0):
# compressedBytes is a memoryview
compressedBytes = compress.BeginCompressBytes(fileBytes)
else:
# compressedBytes is a memoryview
compressedBytes = compress.MoreCompressBytes(fileBytes)
facDest.FileWrite(compressedBytes)
i = i + 1
# At the very end, flush any remaining compressed bytes, if any.
# compressedBytes is a memoryview
compressedBytes = compress.EndCompressBytes()
facDest.FileWrite(compressedBytes)
facSrc.FileClose()
facDest.FileClose()
print("Finished compressing file.")
# ----------------------------------------------------------------------------------
# This is new way of compressing in chunks using FirstChunk and LastChunk properties
# ----------------------------------------------------------------------------------
success = facSrc.OpenForRead("qa_data/bmp/big.bmp")
if (success == False):
print(facSrc.LastErrorText)
sys.exit()
success = facDest.OpenForWrite("c:/temp/qa_output/compressedBmp2.dat")
if (success == False):
print(facDest.LastErrorText)
sys.exit()
# Assuming numBlocks > 1
compress.FirstChunk = True
compress.LastChunk = False
i = 0
while i < numBlocks :
# fileBytes is a memoryview
fileBytes = facSrc.ReadBlock(i,blockSize)
# compressedBytes is a memoryview
compressedBytes = compress.CompressBytes(fileBytes)
facDest.FileWrite(compressedBytes)
i = i + 1
compress.FirstChunk = False
if (i == (numBlocks - 1)):
compress.LastChunk = True
facSrc.FileClose()
facDest.FileClose()
print("Finished compressing file 2.")