Convenience methods for file/process operations
Project description
Convenience methods for file/process operations
Overview
runez is a small convenience library for common operations I found myself rewriting multiple times.
It comes in handy for programs that need to run other programs, or copy/move files etc.
The name was initially meant as “run ez” (“run easy”), the fact that it sounds like “runes” gives it a bit of a mystery/magic side that’s also relatively appropriate (it does indeed concentrate a bit of invocation magic, as you can save quite a few lines of repetitive code by using it)
Features
Support for dryrun mode (show what would be done, but don’t do it)
Perform most typical logging setups in one call to runez.log.setup()
Log operations systematically (at debug level mostly), examples:
Running: foo ... Copy foo -> bar Would move foo -> bar (for dryrun)
CaptureOutput context manager -> grab output/logging from any code section
Take care of most edge cases, with nice errors
Functions can be called without checking for return code etc (abort by default, with nice error)
They can also be called with fatal=False, in which case the return value will indicate whether call succeeded or not
100% test coverage
Example
Run a program:
import runez # Aborts if "foo" doesn't exist output = runez.run("ls", "foo") # Output can also be ignored runez.run("ls", "foo") # Don't capture output, just run the command and let output "pass through" runez.run("ls", "foo", stdout=None, stderr=None) # Don't abort, return False on failure (or actual output when successful) output = runez.run("ls", "foo", fatal=False)
File operations:
import runez runez.touch("foo") runez.copy("foo", "bar") runez.move("foo", "baz") runez.delete("foo") runez.write("foo", "bar\nbaz\n") first = runez.first_line("foo") lines = runez.get_lines("foo") full_path = runez.resolved_path("foo/bar") folder = runez.parent_folder(full_path) runez.ensure_folder(folder) with runez.Anchored(folder): assert runez.short(full_path) == "bar"
Installation
As usual, available on pypi: pip install runez
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
Built Distribution
File details
Details for the file runez-1.9.41.tar.gz
.
File metadata
- Download URL: runez-1.9.41.tar.gz
- Upload date:
- Size: 48.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37ffd3631393cea1e8c28636f9e25618aed61c2ae3919fb8a4bedae85b31e643 |
|
MD5 | 1165e92039c0dc290c385ea80acc8a3c |
|
BLAKE2b-256 | a48799273c277a3b6509f86b84daa185872dbb8132cf4124e915a5f4bc11a319 |
Provenance
File details
Details for the file runez-1.9.41-py2.py3-none-any.whl
.
File metadata
- Download URL: runez-1.9.41-py2.py3-none-any.whl
- Upload date:
- Size: 56.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38a45cf0bd221eb86ad649082ff2cc0a2e8358ad099357d298f0fa5a7865c66a |
|
MD5 | 3c03334d47be7a2b92e7cb511dfdf2f9 |
|
BLAKE2b-256 | 76fe993fbc07868553e77881094fa6744c612625b6f3b9bbf25bc8f9ef60bd43 |