Skip to content

Latest commit

 

History

History
44 lines (24 loc) · 1.77 KB

README.rst

File metadata and controls

44 lines (24 loc) · 1.77 KB

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...)