Skip to main content

A module wrapper for os.path

Project description

https://img.shields.io/pypi/v/path.svg https://img.shields.io/pypi/pyversions/path.svg tests Ruff https://readthedocs.org/projects/path/badge/?version=latest https://img.shields.io/badge/skeleton-2024-informational https://tidelift.com/badges/package/pypi/path

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 based on path.

Advantages

Path pie provides a superior experience to similar offerings.

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 pathlib would supersede path.

But the implementation and the usage quickly diverge, and path has several advantages over pathlib:

  • path implements Path objects as a subclass of str, 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 that do not honor PEP 519 PathLike interface.

  • path give quality of life features beyond exposing basic functionality of a path. path provides methods like rmtree (from shlib) and remove_p (remove a file if it exists), properties like .permissions, and sophisticated walk, TempDir, and chmod behaviors.

  • As a PyPI-hosted package, path is free to iterate faster than a stdlib package. Contributions are welcome and encouraged.

  • path provides superior portability using a uniform abstraction over its single 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 to do something as simple as to add a __dict__ to the subclass instances. path 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. path.Path objects are inherently “pure”, not requiring the author to distinguish between pure and non-pure variants.

This path project has the explicit aim to provide compatibility with pathlib objects where possible, such that a path.Path object is a drop-in replacement for pathlib.Path* objects. This project welcomes contributions to improve that compatibility where it’s lacking.

Origins

The path.py project was initially released in 2003 by Jason Orendorff and has been continuously developed and supported by several maintainers over the years.

For Enterprise

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.

Learn more.

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-16.11.0.tar.gz (49.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

path-16.11.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file path-16.11.0.tar.gz.

File metadata

  • Download URL: path-16.11.0.tar.gz
  • Upload date:
  • Size: 49.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for path-16.11.0.tar.gz
Algorithm Hash digest
SHA256 b4bba7fd041f5c2f1d3968f1d50d555ff58b1d518148fa3b92e0ccf75574e7d3
MD5 95d4f3cb95bb116809ddb3024cda7d62
BLAKE2b-256 e6ae60c756b1bcdd2abc786ee5a20b58e9a4f84db8d1612ebdf3f8f5f8b1efd9

See more details on using hashes here.

File details

Details for the file path-16.11.0-py3-none-any.whl.

File metadata

  • Download URL: path-16.11.0-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for path-16.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 482bebf4a2d81c4f783cf23bd1dbc40436aec74a556e2779ca3bad24cfaaaaf3
MD5 04c2e1d2fff320d61309f4f2b1c43006
BLAKE2b-256 26dd5c40ea50d16cc4816df03e0fc08f891f200217dca379c2c2187e4673e34d

See more details on using hashes here.

Supported by

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