Welcome to zipp documentation!#

For Enterprise

Professional support for zipp is available as part of the Tidelift Subscription. Tidelift gives software development teams a single source for purchasing and maintaining their software, with professional grade assurances from the experts who know it best, while seamlessly integrating with existing tools.

Learn more Request a Demo

class zipp.Path(root, at='')#

Bases: object

A pathlib-compatible interface for zip files.

Consider a zip file with this structure:

.
├── a.txt
└── b
    ├── c.txt
    └── d
        └── e.txt
>>> data = io.BytesIO()
>>> zf = zipfile.ZipFile(data, 'w')
>>> zf.writestr('a.txt', 'content of a')
>>> zf.writestr('b/c.txt', 'content of c')
>>> zf.writestr('b/d/e.txt', 'content of e')
>>> zf.filename = 'mem/abcde.zip'

Path accepts the zipfile object itself or a filename

>>> root = Path(zf)

From there, several path operations are available.

Directory iteration (including the zip file itself):

>>> a, b = root.iterdir()
>>> a
Path('mem/abcde.zip', 'a.txt')
>>> b
Path('mem/abcde.zip', 'b/')

name property:

>>> b.name
'b'

join with divide operator:

>>> c = b / 'c.txt'
>>> c
Path('mem/abcde.zip', 'b/c.txt')
>>> c.name
'c.txt'

Read text:

>>> c.read_text(encoding='utf-8')
'content of c'

existence:

>>> c.exists()
True
>>> (b / 'missing.txt').exists()
False

Coercion to string:

>>> import os
>>> str(c).replace(os.sep, posixpath.sep)
'mem/abcde.zip/b/c.txt'

At the root, name, filename, and parent resolve to the zipfile. Note these attributes are not valid and will raise a ValueError if the zipfile has no filename.

>>> root.name
'abcde.zip'
>>> str(root.filename).replace(os.sep, posixpath.sep)
'mem/abcde.zip'
>>> str(root.parent)
'mem'
exists()#
property filename#
glob(pattern)#
is_dir()#
is_file()#

Return whether this path is a symlink. Always false (python/cpython#82102).

iterdir()#
joinpath(*other)#
match(path_pattern)#
property name#
open(mode='r', *args, pwd=None, **kwargs)#

Open this entry as text or binary following the semantics of pathlib.Path.open() by passing arguments through to io.TextIOWrapper().

property parent#
read_bytes()#
read_text(*args, **kwargs)#
relative_to(other, *extra)#
rglob(pattern)#
property stem#
property suffix#
property suffixes#

Indices and tables#