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(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.
Yasoob wrote the Python 101 Writing a Cleanup Script
based on path.py.
Path.py may be installed using setuptools, distribute, or pip:
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
pathlib,
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 path.py.
But the implementation and the usage quickly diverge, and path.py
has several advantages over pathlib:
path.pyimplementsPathobjects as a subclass ofstr(unicode on Python 2), and as a result thesePathobjects may be passed directly to other APIs that expect simple text representations of paths, whereas withpathlib, one must first cast values to strings before passing them to APIs unaware ofpathlib. 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 likermtree(from shlib) andremove_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 apathlib.Pathto add functionality, but must subclassPath,PosixPath, andWindowsPath, even if one only wishes to add a__dict__to the subclass instances.path.pyinstead allows thePath.moduleobject to be overridden by subclasses, defaulting to theos.path. Even advanced uses ofpath.Paththat subclass the model do not need to be concerned with OS-specific nuances.
In addition to
pathlib, the
pylib project implements a
LocalPath
class, which shares some behaviors and interfaces with path.py.
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
the repository:
pip install git+https://github.com/jaraco/path.py.git
Tests are continuously run by Travis-CI:
To run the tests, refer to the .travis.yml file for the steps run on the
Travis-CI hosts.
Tagged releases are automatically published to PyPI by Travis-CI, assuming the tests pass.
