跳转到主要内容

包装底层FS相关调用,支持高级FS堆叠

项目描述

fslib是Python的os.*底层函数的包装器,旨在

  • 提供更Pythonic的底层原语API

  • 将各种物理位置合并为应用程序的简单伪文件系统

  • 处理类似UnionFS的功能,包括在只读路径上透明写入覆盖

fslib支持Python 3.3+;它只需要标准的Python库。

下载

PyPI:https://pypi.python.org/pypi/fslib/

$ pip install fslib

源:https://github.com/rbarrois/fslib/

$ git clone git://github.com/rbarrois/fslib/
$ python setup.py install

用法

替换import os

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

强制只读

为了确保用户代码不会更改任何物理文件,fslib提供了一个简单的包装器,防止对文件系统进行写入。

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

类似UnionFS的挂载

fslib提供了一个类似UnionFS的包装器作为fslib.stacking.UnionFS。此后端将为多个分支提供合并视图,并将所有写入重定向到声明为writable=True的分支。

>>> import fslib, fslib.builders, fslib.stacking
>>>
>>> mem_fs = fslib.builders.make_memory_fake()
>>> 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')
True
>>> fs.readlines('/tmp/x')
['aa', 'bb']
>>> fs.access('/tmp/x', os.F_OK)
True

类Unix文件系统树

可以将物理或虚拟文件系统“覆盖”以向程序提供简单、统一的结构。

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

使用此设置

  • 所有对 /home/xelnor/.myapp/cache 的读取/写入操作实际上都会发生在 /tmp/myapp/shared_cache

  • /home/xelnor/.myapp 内部的所有读取/写入操作(除了 /cache)都会在内存中完成

  • 不允许在任何其他地方进行写入。

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

fslib-0.3.4.tar.gz (15.0 kB 查看散列)

上传时间

构建分发

fslib-0.3.4-py3-none-any.whl (15.1 kB 查看散列)

上传时间 Python 3

支持