Skip to content
/ rsfile Public

Improved IO streams for python3, with advanced open flags, support for fine-grained locking, and some cool additional methods.

License

Notifications You must be signed in to change notification settings

pakal/rsfile

Repository files navigation

RSFILE

https://ci.appveyor.com/api/projects/status/x002hlal3qwiavsa/branch/master

RSFile provides pure-python drop-in replacements for the classes of the io module, and for the open() builtin.

Its goal is to provide a cross-platform, reliable, and comprehensive synchronous file I/O API, with advanced features like fine-grained opening modes, shared/exclusive file record locking, thread-safety, disk cache synchronization, file descriptor inheritability, and handy stat getters (size, inode, times...).

Locking is performed using actual file record locking capabilities of the OS, not by using separate files/directories as locking markers, or other fragile gimmicks.

Possible use cases for this library: concurrently writing to logs without ending up with garbled data, manipulating sensitive data like disk-based databases, synchronizing heterogeneous producer/consumer processes when multiprocessing semaphores aren't an option, etc.

Tested on CPython3, on windows and unix-like systems. Should work with IronPython/Jython/PyPy too, since it uses stdlib utilities and ctypes bridges.

Read the documentation here: https://rsfile.readthedocs.io/en/latest/

INSTALL

$ pip install rsfile

QUICKSTART

from rsfile import rsopen

with rsopen("myfile.txt", "w") as f:
    f.write("This string will be veeeeeryyyyy safely written to file.")

with rsopen("myfile.txt", "WANISB", locking=False, thread_safe=False) as f:
    f.write(b"See the docs for info on these cool new modes and parameters.")

See CONTRIBUTING.rst for development advice (testing, benchmarking...)

About

Improved IO streams for python3, with advanced open flags, support for fine-grained locking, and some cool additional methods.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages