zipfile
    The Python zipfile module provides tools to create, read, write, and extract ZIP archives. With just a few lines of code, you can manipulate ZIP files to back up data, share files, or save disk space.
Here’s a quick example:
>>> import zipfile
>>> with zipfile.ZipFile("example.zip", mode="w") as zip_file:
...     zip_file.write("example.txt")
...
Key Features
- Creates ZIP archives
 - Reads and writes compressed files
 - Supports ZIP64 format for large files
 - Allows for extracting specific files from a ZIP archive
 - Provides a context manager for managing ZIP files
 - Supports multiple compression methods
 - Handles reading password-protected ZIP files
 - Allows adding files with custom archive names
 - Integrates with file-like objects or streams
 - Supports reading and writing metadata, including comments and timestamps
 - Enables appending files to existing archives
 
Frequently Used Classes and Functions
| Object | Type | Description | 
|---|---|---|
zipfile.ZipFile | 
Class | Provides a high-level interface to ZIP archives | 
zipfile.is_zipfile() | 
Function | Tests whether a file is a ZIP archive | 
zipfile.ZipInfo | 
Class | Represents information about a member of a ZIP archive | 
zipfile.PyZipFile | 
Class | Extends ZipFile for working with Python libraries | 
zipfile.ZipExtFile | 
Class | Provides a file-like object for reading an archive member | 
zipfile.ZipFile.write() | 
Method | Adds a file to the ZIP archive | 
zipfile.ZipFile.extractall() | 
Method | Extracts all members from the archive to the current directory or a specified path | 
zipfile.ZipFile.namelist() | 
Method | Returns a list of names of the archive contents | 
Examples
Reads the contents of a ZIP file:
>>> import zipfile
>>> with zipfile.ZipFile("archive.zip", mode="r") as archive:
...     archive.namelist()
['file.txt']
Extracts all files from a ZIP archive:
>>> with zipfile.ZipFile("archive.zip", mode="r") as archive:
...     archive.extractall("extracted_files")
...
Common Use Cases
- Backing up directories and files to ZIP files
 - Inspecting the contents of third-party archives before extraction
 - Distributing Python projects as compressed archives
 - Manipulating ZIP files without extracting them to disk
 - Bundling datasets for reproducible experiments
 - Securely transmitting files by compressing and encrypting them
 
Real-World Example
Suppose you want to create a ZIP archive of all Python files in a project/ directory. This example demonstrates how to do that efficiently:
>>> import pathlib, zipfile
>>> project_dir = pathlib.Path("project")
>>> archive_path = project_dir.with_suffix(".zip")
>>> with zipfile.ZipFile(archive_path, mode="w") as zip_file:
...     for file in project_dir.rglob("*.py"):
...         zip_file.write(file, file.relative_to(project_dir))
...
>>> archive_path.exists()
True
In this example, you create a ZIP archive containing all Python files in a directory, illustrating how the zipfile module can automate the archiving process efficiently.
Related Resources
Tutorial
Python's zipfile: Manipulate Your ZIP Files Efficiently
In this guided tutorial, you'll learn how to manipulate ZIP files using Python's zipfile module from the standard library. Through hands-on examples, you'll learn how to read, write, compress, and extract files from your ZIP files quickly.
For additional information on related topics, take a look at the following resources:
- Manipulating ZIP Files With Python (Course)
 
By Leodanis Pozo Ramos • Updated July 30, 2025