Object-oriented file system path manipulation
.. image:: https://img.shields.io/pypi/v/path.svg :target:
.. image:: https://img.shields.io/pypi/pyversions/path.svg :target:
.. _PyPI link: https://pypi.org/project/path
.. image:: https://github.com/jaraco/path/workflows/Automated%20Tests/badge.svg :target: https://github.com/jaraco/path/actions?query=workflow%3A%22Automated+Tests%22 :alt: Automated Tests
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: Code style: Black
.. image:: https://readthedocs.org/projects/path/badge/?version=latest :target: https://path.readthedocs.io/en/latest/?badge=latest
.. image:: https://tidelift.com/badges/package/pypi/path :target: https://tidelift.com/subscription/pkg/pypi-path?utmsource=pypi-path&utmmedium=readme
path(aka path pie, formerly
path.py) implements path objects as first-class entities, allowing common operations on files to be invoked on those path objects directly. For example:
.. code-block:: python
from path import Path
d = Path("/home/guido/bin") for f in d.files("*.py"): f.chmod(0o755)
for f in d.files("*.py"): f.chmod("u+rwx")
Changing the working directory:
with Path("somewhere"): # cwd in now
Concatenate paths with /
foo_txt = Path("bar") / "foo.txt"
Path pie is
hosted at Github_.
the documentation here_.
Yasoob wrote the Python 101
Writing a Cleanup Script_ based on
Python 3.4 introduced
pathlib_, which shares many characteristics with
path. In particular, it provides an object encapsulation for representing filesystem paths. One may have imagined
But the implementation and the usage quickly diverge, and
pathhas several advantages over
Pathobjects as a subclass of
str, and as a result these
Pathobjects may be passed directly to other APIs that expect simple text representations of paths, whereas with
pathlib, one must first cast values to strings before passing them to APIs unaware of
pathlib. This shortcoming was
addressed by PEP 519_, in Python 3.6.
pathgoes beyond exposing basic functionality of a path and exposes commonly-used behaviors on a path, providing methods like
rmtree(from shlib) and
remove_p(remove a file if it exists).
pathis free to iterate faster than a stdlib package. Contributions are welcome and encouraged.
pathprovides a uniform abstraction over its Path object, freeing the implementer to subclass it readily. One cannot subclass a
pathlib.Pathto add functionality, but must subclass
WindowsPath, even if one only wishes to add a
__dict__to the subclass instances.
pathinstead allows the
Path.moduleobject to be overridden by subclasses, defaulting to the
os.path. Even advanced uses of
path.Paththat subclass the model do not need to be concerned with OS-specific nuances.
In addition to
pylib projectimplements a
LocalPath_ class, which shares some behaviors and interfaces with
To install a development version, use the Github links to clone or download a snapshot of the latest code. Alternatively, if you have git installed, you may be able to use
pipto install directly from the repository::
pip install git+https://github.com/jaraco/path.git
Tests are invoked with
tox_. After having installed tox, simply invoke
toxin a checkout of the repo to invoke the tests.
Tests are also run in continuous integration. See the badges above for links to the CI runs.
Tagged releases are automatically published to PyPI by Azure Pipelines, assuming the tests pass.
path.pyproject was initially released in 2003 by Jason Orendorff and has been continuously developed and supported by several maintainers over the years.
Available as part of the Tidelift Subscription.
This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
To report a security vulnerability, please use the
Tidelift security contact_. Tidelift will coordinate the fix and disclosure.