Skip to main content

Extended Pathlib

Project description

Superpathlib

Maximize your productivity using minimal code!

Superpathlib enhances file operations, making them more intuitive and easy to implement. This library builds upon Python's standard library pathlib module, offering an expansive range of added features without compromising performance.

Usage

from plib import Path

path = Path(filename)

1) Use properties to read & write path content in different formats

  • text
  • byte_content
  • lines
  • yaml
  • json
  • numpy

examples:

path.json = {key: value}

for line in path.lines:
    if interesting(line):
        process(line)

2) Use instance properties to get/set file metadata:

  • get:
    • size: filesize
    • is_root: whether the owner of the file is a root user
    • has_children: whether a path has children
    • number_of_children: number of children in a folder
    • filetype: content type of a file
  • get & set:
    • mtime: modified time
    • tag: can be used for alternative ordering or metadata

examples:

path_new.mtime = path_old.mtime

if path.tag != skip_keyword and path.filetype == "video":
    process(path)

3) Use class properties to access commonly used folders:

  • docs
  • assets
  • ..

example:

names_path = Path.assets / 'names'
names = names_path.lines

4) Use additional functionality

  • find(): recursively find all paths under a root that match a condition (extra options available for performance optimization)
  • rmtree(): remove directory recursively
  • copy_to(dest): copy content to dest
  • copy_properties_to(dest): recursively copy path properties (mtime, tag) to all n-level children of dest
  • tempfile(): create temporary file that can be used as context manager
  • unpack(): extract archive(zip, tar, ..) file to desired folder
  • pop_parent(): remove first parent from path in filesystem
  • from_uri(uri): create path object from uri string

examples:

with Path.tempfile() as tmp:
    do_work(logfile=tmp)
    log = tmp.text
process(log)

condition = lambda p: (p / '.git').exists()
for git_path in root.find(condition):
    process_git(git_path)

5) Enhance existing functionality

  • Automatically create parents when writing files, creating new files, renaming files, ..
  • Return default values when path does not exist (e.g. size = 0, lines=[])

6) Inherit from plib Path to define your own additional functionality:

example:

import plib

class Path(plib.Path):
    def count_children(self):
        return sum(1 for _ in self.iterdir())

This only works if you inherit from plib Path, not pathlib Path

Installation

pip install superpathlib

Install the packages corresponding with the properties you want to use

  • e.g. PyYaml for yaml property
  • Packages listed in requirements.txt

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

superpathlib-1.1.2.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

superpathlib-1.1.2-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file superpathlib-1.1.2.tar.gz.

File metadata

  • Download URL: superpathlib-1.1.2.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for superpathlib-1.1.2.tar.gz
Algorithm Hash digest
SHA256 a4daa48f911ec31e51e265fc6d9c1a0e2b1b7f0fc23f4e0fb2ae889a8abbf315
MD5 732c9ad39eca40536a89f9a1e0206ebd
BLAKE2b-256 0d65e513a7d2387e8e5762cc0f1fa32fbd6a72f00ae3e1e66f6cd65dedf8967b

See more details on using hashes here.

File details

Details for the file superpathlib-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: superpathlib-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for superpathlib-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 791b009aa29461e6a3d010353a11842c99d9f24147408610173d3f79f123a999
MD5 58e23ba717eee47789cca8e3fa719fe4
BLAKE2b-256 0b2bc08e6cbdbd69e5cc614b5285f7e71f518cd82ae586f70d902068394e292a

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