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
- content_hash: a hash of the complete substructure found in a folder
- 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=[])
- Support replacing folders instead files only if specified
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
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.8.tar.gz
(12.8 kB
view details)
Built Distribution
File details
Details for the file superpathlib-1.1.8.tar.gz
.
File metadata
- Download URL: superpathlib-1.1.8.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4faa4226f5f7194ccc70b2c7d39d9406d6eb4b1337453edcc15cc769e1d1977c |
|
MD5 | cbdbc1f65181257c873cac725cee5225 |
|
BLAKE2b-256 | 7e732fb37e4743d80410104cba52591daacf08312ebae2f5303190eadb3a0780 |
File details
Details for the file superpathlib-1.1.8-py3-none-any.whl
.
File metadata
- Download URL: superpathlib-1.1.8-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c80b5736568748a5996c9eb12ac80cc22f38bab59b2bec1dcf2a54439b1dbab7 |
|
MD5 | ff72da7228f2c916004d0e2f7ee56818 |
|
BLAKE2b-256 | 6c2163a17f878f08f954ec75d4012ea16464b2f66f25c73cb4fa4db387e3e395 |