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:
from path import Path d = Path("/home/guido/bin") for f in d.files("*.py"): f.chmod(0o755) # Globbing for f in d.files("*.py"): f.chmod("u+rwx") # Changing the working directory: with Path("somewhere"): # cwd in now `somewhere` ... # Concatenate paths with / foo_txt = Path("bar") / "foo.txt"
Path pie is hosted at Github.
Find the documentation here.
Guides and Testimonials
Yasoob wrote the Python 101 Writing a Cleanup Script
Python 3.4 introduced
which shares many characteristics with
path. In particular,
it provides an object encapsulation for representing filesystem paths.
One may have imagined
pathlib would supersede
But the implementation and the usage quickly diverge, and
has 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 somewhat mitigated by PEP 519, in Python 3.6.
pathgive quality of life features beyond exposing basic functionality of a path.
pathprovides methods like
rmtree(from shlib) and
remove_p(remove a file if it exists), properties like
.permissions, and sophisticated
- As a PyPI-hosted package,
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.
This path project has the explicit aim to provide compatibility
pathlib objects where possible, such that a
object is a drop-in replacement for
This project welcomes contributions to improve that compatibility
where it's lacking.
path.py project 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.