Skip to main content

A module wrapper for os.path

Project description

https://img.shields.io/pypi/v/path.py.svg https://img.shields.io/pypi/pyversions/path.py.svg https://img.shields.io/travis/jaraco/path.py/master.svg https://img.shields.io/appveyor/ci/jaraco/path-py/master.svg https://readthedocs.org/projects/pathpy/badge/?version=latest

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.

Guides and Testimonials

Yasoob wrote the Python 101 Writing a Cleanup Script based on path.py.

Installing

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.

Advantages

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.py implements Path objects as a subclass of str (unicode on Python 2), and as a result these Path objects 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.py goes 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.py is free to iterate faster than a stdlib package. Contributions are welcome and encouraged.

  • path.py provides a uniform abstraction over its Path object, freeing the implementer to subclass it readily. One cannot subclass a pathlib.Path to add functionality, but must subclass Path, PosixPath, and WindowsPath, even if one only wishes to add a __dict__ to the subclass instances. path.py instead allows the Path.module object to be overridden by subclasses, defaulting to the os.path. Even advanced uses of path.Path that subclass the model do not need to be concerned with OS-specific nuances.

Alternatives

In addition to pathlib, the pylib project implements a LocalPath class, which shares some behaviors and interfaces with path.py.

Development

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

Testing

Tests are continuously run by Travis-CI: BuildStatus

To run the tests, refer to the .travis.yml file for the steps run on the Travis-CI hosts.

Releasing

Tagged releases are automatically published to PyPI by Travis-CI, assuming the tests pass.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

path.py-11.5.1.tar.gz (43.5 kB view details)

Uploaded Source

Built Distribution

path.py-11.5.1-py2.py3-none-any.whl (4.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file path.py-11.5.1.tar.gz.

File metadata

  • Download URL: path.py-11.5.1.tar.gz
  • Upload date:
  • Size: 43.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for path.py-11.5.1.tar.gz
Algorithm Hash digest
SHA256 88d271b9d59f332861e72a5c48e60034e0439372629a1bd5894b0aac60902947
MD5 07db64dbbbaa92d56bb7ef5483386e58
BLAKE2b-256 11de057a3bfdebafa800c80c1367e51deb8aaf2676897b248fdebf01149ad699

See more details on using hashes here.

File details

Details for the file path.py-11.5.1-py2.py3-none-any.whl.

File metadata

  • Download URL: path.py-11.5.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for path.py-11.5.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c2373e5b13468d557ffaf6ad22844f6202a24f1b595f2be332ab67195f7a60f8
MD5 20846c8e384a1f524ebb2fba2de1f038
BLAKE2b-256 8fa80bac3671dda3b644b49f8b575cf52a6cefb88de00fb48fb3a745c1d1d182

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page