Skip to main content

betterpath, or “bp”, is an adaptation of the classic Twisted FilePath type and interface. bp provides a simple, robust, well-tested object abstraction over file paths, generalizing the concept of file paths beyond filesystems.

File Paths

bp exposes an interface, bp.abstract.IFilePath, for file paths, and provides the following concrete implementations:

  • bp.filepath.FilePath, for the root filesystem

  • bp.zippath.ZipPath, for ZIP archives

  • bp.memory.MemoryPath, for in-memory temporary filesystems

In addition, there are combining abstract file paths which can be wrapped around other file paths:

  • bp.readonly.ReadOnlyPath, for read-only filesystems

API documentation is available at http://betterpath.rtfd.org/.

Vs. the Competition

os.path

The venerable champ, os.path has been the cause of (and solution to) most of Python’s path problems over the years.

Pros

  • In the standard library

Cons

  • Unsafe

  • Verbose

  • Operates on strs

  • No interfaces or ABCs for functionality

  • Only covers the root filesystem

pathlib

pathlib hopes to carve a path towards greatness through PEP 428.

Pros

  • Convenient __div__() overloading

Cons

  • No interfaces or ABCs for functionality

  • Only covers the root filesystem

Examples

Saving Data to Disk

The Old Way

def save(base, fragments, data):
    # `fragments` could contain unsafe paths!
    if ".." in fragments or "." in fragments:
        raise ValueError("Unsafe paths!")
    path = os.path.join(os.path.abspath(base), os.sep.join(fragments))
    # Alternatively: path = os.path.join(os.path.abspath(base), *fragments)
    # I hope that this doesn't fail mid-write! Also, did the directories
    # exist? I think so, yes.
    with open(path, "wb") as handle:
        handle.write(data)

The New Way

def save(base, fragments, data):
    path = base.descendant(fragments)
    path.parent().makeDirs()
    path.setContent(data)

Changelog

0.2

  • Initial release

Download files

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

Source Distribution

betterpath-0.2.2.tar.gz (38.1 kB view details)

Uploaded Source

File details

Details for the file betterpath-0.2.2.tar.gz.

File metadata

  • Download URL: betterpath-0.2.2.tar.gz
  • Upload date:
  • Size: 38.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for betterpath-0.2.2.tar.gz
Algorithm Hash digest
SHA256 e8d04e884d404dae3e622248e1b9c4b80876e21cd1fbdd76fd50ee0d2cb26fe4
MD5 f8242ab4477ef923a4996716fffa467b
BLAKE2b-256 7460be35047cf73c77b76aeee08de0a729b745f9f3e6c7393670115f52597e81

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.2 This release

1 file

0.2.1

1 file

0.2

1 file

0.1.dev26

Supported by

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