Brotli is a highly efficient compression algorithm known for its excellent compression rates. In this article, we will introduce the isbrotli
module and explore its extensive API with practical examples. By the end, you’ll have a comprehensive understanding of how to leverage isbrotli
in your projects.
Installing isbrotli
Before you begin, install the isbrotli
module:
pip install isbrotli
Basic Usage
Let’s start with some basic usage of the isbrotli
API:
import isbrotli # Compress data original_data = b"Hello, Brotli compression!" compressed_data = isbrotli.compress(original_data) # Decompress data decompressed_data = isbrotli.decompress(compressed_data) assert original_data == decompressed_data
Advanced Compression Options
Customize the compression process with various options:
import isbrotli options = { 'quality': 5, # Compression quality (0-11) 'mode': isbrotli.MODE_TEXT # Compression mode (GENERIC, TEXT, FONT) } compressed_data = isbrotli.compress(b"Some data to compress", options)
Streaming Compression
Handle large files by using streaming compression:
import isbrotli compressor = isbrotli.StreamCompressor() with open('largefile.txt', 'rb') as f_in, open('largefile.txt.br', 'wb') as f_out: while chunk := f_in.read(1024 * 1024): f_out.write(compressor.compress(chunk)) f_out.write(compressor.finish())
Streaming Decompression
Stream decompressed data:
import isbrotli decompressor = isbrotli.StreamDecompressor() with open('largefile.txt.br', 'rb') as f_in, open('largefile_decompressed.txt', 'wb') as f_out: while chunk := f_in.read(1024 * 1024): f_out.write(decompressor.decompress(chunk)) f_out.write(decompressor.finish())
Example Application
Let’s build a simple application that uses isbrotli
to compress and decompress files:
import isbrotli import argparse def compress_file(input_path, output_path): with open(input_path, 'rb') as f_in, open(output_path, 'wb') as f_out: compressed_data = isbrotli.compress(f_in.read()) f_out.write(compressed_data) def decompress_file(input_path, output_path): with open(input_path, 'rb') as f_in, open(output_path, 'wb') as f_out: decompressed_data = isbrotli.decompress(f_in.read()) f_out.write(decompressed_data) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Compress or decompress files using isbrotli") parser.add_argument("mode", choices=["compress", "decompress"], help="Mode: compress or decompress") parser.add_argument("input", help="Input file path") parser.add_argument("output", help="Output file path") args = parser.parse_args() if args.mode == "compress": compress_file(args.input, args.output) elif args.mode == "decompress": decompress_file(args.input, args.output)
Hash: ae7add1f7ec50bddd7d6832162ee9ef25dcd4b7193b066bacd681229cf342bb4