Extended Pathlib
Project description
Superpathlib
Superpathlib offers Path objects with functionality extended from pathlib to maximize your productivity with a minimal amount of code.
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 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 the standard library 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
Release history Release notifications | RSS feed
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.1.tar.gz
(11.6 kB
view details)
Built Distribution
File details
Details for the file superpathlib-1.1.1.tar.gz
.
File metadata
- Download URL: superpathlib-1.1.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de4464c647618d3dfa74df637f1cc82bbced8baf345d26c88e7c35487a4490f5 |
|
MD5 | c67257a72943a5efeb535083463f1cde |
|
BLAKE2b-256 | 4480cb654f8f7531bb9ef7ab900fd35a4b592c4011c33503c56373ad50a6fc96 |
File details
Details for the file superpathlib-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: superpathlib-1.1.1-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a33622f7592190787d4d9d829247a0d781f2967f0cffbf71800c8d6b7f8075d |
|
MD5 | 27731c711cd01d4ebad153ac63ade11c |
|
BLAKE2b-256 | 2478b4bde691af0b88f7fe28fb2922a0219385d331c1b6f0442acddb214a29c5 |