python-snappy

0.7.3 · active · verified Thu Apr 09

python-snappy is a Python library that provides a high-performance wrapper for Google's Snappy compression library. It's designed for fast data compression and decompression, suitable for applications like data transfer, storage, and database indexing. The current version is 0.7.3. Releases are made periodically to maintain compatibility with newer Python versions and address underlying library changes.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates basic one-shot compression/decompression and the use of `StreamCompressor` and `StreamDecompressor` for handling larger data in chunks. Ensure the underlying Snappy C library is installed first.

import snappy

# Basic compression and decompression
original_data = b"This is some data to be compressed using snappy!" * 100
compressed_data = snappy.compress(original_data)
decompressed_data = snappy.decompress(compressed_data)

print(f"Original size: {len(original_data)} bytes")
print(f"Compressed size: {len(compressed_data)} bytes")
print(f"Decompressed data matches original: {original_data == decompressed_data}")

# Streaming compression and decompression
compressor = snappy.StreamCompressor()
compressed_stream_chunks = []

# Simulate sending data in chunks
for chunk in [b'part one', b'part two', b'part three']:
    compressed_stream_chunks.append(compressor.compress(chunk))
compressed_stream_chunks.append(compressor.flush()) # Important to flush remaining data

full_compressed_stream = b''.join(compressed_stream_chunks)

decompressor = snappy.StreamDecompressor()
decompressed_stream_chunks = []

# Simulate receiving and decompressing data in chunks
for chunk in [full_compressed_stream[:15], full_compressed_stream[15:]]:
    decompressed_stream_chunks.append(decompressor.decompress(chunk))

final_decompressed_stream = b''.join(decompressed_stream_chunks)
print(f"Stream decompressed data: {final_decompressed_stream}")
print(f"Stream decompressed data matches original: {final_decompressed_stream == b'part onepart twopart three'}")

view raw JSON →