path.py implements path objects as first-class entities, allowing
common operations on files to be invoked on those path objects directly. For
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(0o755) # Changing the working directory: with Path("somewhere"): # cwd in now `somewhere` ... # Concatenate paths with / foo_txt = Path("bar") / "foo.txt"
path.py is hosted at Github.
Find the documentation here.
Guides and Testimonials
Yasoob wrote the Python 101 Writing a Cleanup Script
Path.py may be installed using
pip install path.py
The latest release is always updated to the Python Package Index.
You may also always download the source distribution (zip/tarball), extract
it, and run
python setup.py to install it.
Python 3.4 introduced
which shares many characteristics with
path.py. 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(unicode on Python 2), 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.
path.pygoes 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).
- As a PyPI-hosted package,
path.pyis free to iterate faster than a stdlib package. Contributions are welcome and encouraged.
path.pyprovides 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.
path.pyinstead 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.
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
pip to install directly from
pip install git+https://github.com/jaraco/path.py.git
To run the tests, refer to the
.travis.yml file for the steps run on the
Tagged releases are automatically published to PyPI by Travis-CI, assuming the tests pass.