This guide will get you compressing and decompressing files in minutes.
from rustyzipper import compress_file, decompress_file
# Compress a single file with AES-256 encryption
compress_file("report.pdf", "report.zip", password="secret123")
# Decompress
decompress_file("report.zip", "output/", password="secret123")from rustyzipper import compress_files
# Compress multiple files
compress_files(
["file1.txt", "file2.txt", "image.png"],
"archive.zip",
password="secret123"
)from rustyzipper import compress_directory
# Compress an entire directory
compress_directory(
"my_project/",
"backup.zip",
password="secret123",
exclude_patterns=["__pycache__", "*.pyc", ".git"]
)Perfect for web applications or when you don't want to touch the filesystem:
from rustyzipper import compress_bytes, decompress_bytes
# Create files in memory
files = [
("hello.txt", b"Hello, World!"),
("data.json", b'{"key": "value"}'),
]
# Compress to bytes
zip_data = compress_bytes(files, password="secret")
# Decompress from bytes
extracted = decompress_bytes(zip_data, password="secret")
for filename, content in extracted:
print(f"{filename}: {content}")RustyZip supports multiple encryption methods:
from rustyzipper import compress_file, EncryptionMethod
# AES-256 (default, recommended)
compress_file("doc.pdf", "secure.zip", password="secret")
# ZipCrypto (legacy, for Windows Explorer compatibility)
compress_file(
"doc.pdf",
"compatible.zip",
password="secret",
encryption=EncryptionMethod.ZIPCRYPTO,
suppress_warning=True # Acknowledge weak encryption
)
# No encryption
compress_file("doc.pdf", "plain.zip", encryption=EncryptionMethod.NONE)!!! warning "ZipCrypto Security" ZipCrypto is a weak encryption method. Only use it when you need compatibility with Windows Explorer's built-in ZIP support.
Trade off between speed and file size:
from rustyzipper import compress_file, CompressionLevel
# Store only (fastest, no compression)
compress_file("video.mp4", "video.zip", compression_level=CompressionLevel.STORE)
# Fast compression
compress_file("data.csv", "data.zip", compression_level=CompressionLevel.FAST)
# Default (balanced)
compress_file("doc.pdf", "doc.zip", compression_level=CompressionLevel.DEFAULT)
# Maximum compression (slowest, smallest)
compress_file("logs.txt", "logs.zip", compression_level=CompressionLevel.BEST)Control decompression limits to protect against ZIP bombs:
from rustyzipper import decompress_file, SecurityPolicy
# Default security (2GB max, 500:1 ratio)
decompress_file("archive.zip", "output/")
# Custom limits for large archives
policy = SecurityPolicy(max_size="10GB", max_ratio=1000)
decompress_file("large.zip", "output/", policy=policy)
# Strict policy for untrusted files
strict = SecurityPolicy.strict(max_size="100MB", max_ratio=100)
decompress_file("user_upload.zip", "sandbox/", policy=strict)
# Unlimited (only for fully trusted archives!)
decompress_file("backup.zip", "restore/", policy=SecurityPolicy.unlimited())- File Operations Guide - Detailed file operations
- Streaming Guide - Process large files efficiently
- Security Guide - Understanding security features
- API Reference - Complete API documentation