Skip to main content

Wrapper around low-level FS-related calls, with support for advanced FS stacking

Project description

fslib is a wrapper around Python’s os.* low-level functions, aiming to:

  • Provide more pythonic APIs for low-level primitives
  • Merge various physical locations into a simple pseudo-filesystem for the application
  • Handle UnionFS-like features, including transparent write overlay on top of read-only paths

fslib supports Python 3.3+; it requires only the standard Python library.



$ pip install fslib


$ git clone git://
$ python install


Replacing import os

>>> import fslib
>>> fs = fslib.FileSystem(fslib.OSFS('/'))
>>> fs.dir_exists('/etc/')
>>> fs.listdir('/')
['/etc', '/dev', '/proc']

Forcing read-only

In order to ensure that user code doesn’t change any physical file, fslib provides a simple wrapper that prevents writing to the filesystem.

>>> import fslib
>>> import fslib.stacking
>>> fs = fslib.FileSystem(fslib.stacking.ReadOnlyFS(fslib.OSFS('/')))
>>> fs.read_one_line('/etc/hostname')
>>>'/tmp/x', 'w')
OSError: [Errno 30] Read-only file system: '/tmp/x'

UnionFS-like mounting

fslib provides a UnionFS-like wrapper as fslib.stacking.UnionFS. This backend will provide a merged view of several branch, redirecting all writes to the branch(es) declared writable=True.

>>> import fslib,, fslib.stacking
>>> mem_fs =
>>> union_fs = fslib.stacking.UnionFS()
>>> union_fs.add_branch(mem_fs, ref='memory', rank=0, writable=True)
>>> union_fs.add_branch(fslib.stacking.ReadOnlyFS(fslib.OSFS('/')), ref='os', rank=1)
>>> fs = fslib.FileSystem(backend=union_fs)
>>> fs.writelines('/tmp/x', ['aa', 'bb'])
>>> open('/tmp/x', 'r')
IOError: [Errno 2] No such file or directory: '/tmp/x'
>>> fs.file_exists('/tmp/x')
>>> fs.readlines('/tmp/x')
['aa', 'bb']
>>> fs.access('/tmp/x', os.F_OK)

Unix-like filesystem tree

It is possible to “overlay” physical or virtual file systems to present a simple, unified structure to the program.

>>> import fslib, fslib.stacking
>>> mnt = fslib.MountFS()
>>> mnt.mount_fs('/', fslib.stacking.ReadOnlyFS(fslib.OSFS('/')))
>>> mnt.mount_fs('/home/xelnor/.myapp', fslib.stacking.MemoryFS())
>>> mnt.mount_fs('/home/xelnor/.myapp/cache', fslib.OSFS('/tmp/myapp/shared_cache'))

With this setup:

  • All reads/writes to /home/xelnor/.myapp/cache will actually occur within /tmp/myapp/shared_cache
  • All reads/writes within /home/xelnor/.myapp (except for /cache) will occur in memory
  • No write will be permitted anywhere else.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for fslib, version 0.3.4
Filename, size File type Python version Upload date Hashes
Filename, size fslib-0.3.4.tar.gz (15.0 kB) File type Source Python version None Upload date Hashes View
Filename, size fslib-0.3.4-py3-none-any.whl (15.1 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page