包装底层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 查看散列)
关闭
fslib-0.3.4.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d2f6949da0ab140c8a7836c2d6834fbe6ec87f91c2dc368171cc008733a18d22 |
|
MD5 | 55b68cca88b877b51590bb83539c2620 |
|
BLAKE2b-256 | f665b34e6f1883de5fdccf1d97d2507d8c3d38e2947eff11c3797c96f9b43823 |
关闭
fslib-0.3.4-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 224dcd976fee59088a61d0a92b6c2313a7fb4e7286794a0e16e90a6fd07e6982 |
|
MD5 | e58f5aab65441fe58aa85032814c4ef5 |
|
BLAKE2b-256 | 042d58e3a8053969aeefc348b50d73cf46ca4cdf364976cd2bfd9fdac0cfea27 |