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