💎 PREMIUM: /library/zipfile.html - Full Gallery 2025
zipfile — Work with ZIP archives¶
Source code: Lib/zipfile/
The ZIP file format is a common archive and compression standard. This module provides tools to create, read, write, append, and list a ZIP file. Any advanced use of this module will require an understanding of the format, as defined in PKZIP Application Note.
This module does not handle multipart ZIP files. It can handle ZIP files that use the ZIP64 extensions (that is ZIP files that are more than 4 GiB in size). It supports decryption of encrypted files in ZIP archives, but it cannot create an encrypted file. Decryption is extremely slow as it is implemented in native Python rather than C.
Handling compressed archives requires optional modules
such as zlib, bz2, lzma, and compression.zstd.
If any of them are missing from your copy of CPython,
look for documentation from your distributor (that is,
whoever provided Python to you).
If you are the distributor, see Requirements for optional modules.
The module defines the following items:
- exception zipfile.BadZipFile¶
The error raised for bad ZIP files.
Added in version 3.2.
- exception zipfile.BadZipfile¶
Alias of
BadZipFile, for compatibility with older Python versions.Deprecated since version 3.2.
- exception zipfile.LargeZipFile¶
The error raised when a ZIP file would require ZIP64 functionality but that has not been enabled.
- class zipfile.ZipFile
The class for reading and writing ZIP files. See section ZipFile objects for constructor details.
- class zipfile.Path
Class that implements a subset of the interface provided by
pathlib.Path, including the fullimportlib.resources.abc.Traversableinterface.Added in version 3.8.
- class zipfile.PyZipFile
Class for creating ZIP archives containing Python libraries.
- class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0))¶
Class used to represent information about a member of an archive. Instances of this class are returned by the
getinfo()andinfolist()methods ofZipFileobjects. Most users of thezipfilemodule will not need to create these, but only use those created by this module. filename should be the full name of the archive member, and date_time should be a tuple containing six fields which describe the time of the last modification to the file; the fields are described in section ZipInfo objects.Changed in version 3.13: A public
compress_levelattribute has been added to expose the formerly protected_compresslevel. The older protected name continues to work as a property for backwards compatibility.- _for_archive(archive)¶
Resolve the date_time, compression attributes, and external attributes to suitable defaults as used by
ZipFile.writestr().Returns self for chaining.
Added in version 3.14.
- zipfile.is_zipfile(filename)¶
Returns
Trueif filename is a valid ZIP file based on its magic number, otherwise returnsFalse. filename may be a file or file-like object too.Changed in version 3.1: Support for file and file-like objects.
- zipfile.ZIP_STORED¶
The numeric constant for an uncompressed archive member.
- zipfile.ZIP_DEFLATED¶
The numeric constant for the usual ZIP compression method. This requires the
zlibmodule.
- zipfile.ZIP_BZIP2¶
The numeric constant for the BZIP2 compression method. This requires the
bz2module.Added in version 3.3.
- zipfile.ZIP_LZMA¶
The numeric constant for the LZMA compression method. This requires the
lzmamodule.Added in version 3.3.
- zipfile.ZIP_ZSTANDARD¶
The numeric constant for Zstandard compression. This requires the
compression.zstdmodule.Note
In APPNOTE 6.3.7, the method ID
20was assigned to Zstandard compression. This was changed in APPNOTE 6.3.8 to method ID93to avoid conflicts, with method ID20being deprecated. For compatibility, thezipfilemodule reads both method IDs but will only write data with method ID93.Added in version 3.14.
Note
The ZIP file format specification has included support for bzip2 compression since 2001, for LZMA compression since 2006, and Zstandard compression since 2020. However, some tools (including older Python releases) do not support these compression methods, and may either refuse to process the ZIP file altogether, or fail to extract individual files.
See also
- PKZIP Application Note
Documentation on the ZIP file format by Phil Katz, the creator of the format and algorithms used.
- Info-ZIP Home Page
Information about the Info-ZIP project’s ZIP archive programs and development libraries.
ZipFile objects¶
- class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True, metadata_encoding=None)¶
Open a ZIP file, where file can be a path to a file (a string), a file-like object or a path-like object.
The mode parameter should be
'r'