包装PortalLocker配方,方便使用

portalocker的Python项目详细描述


Linux Test StatusWindows Tests StatusCoverage Status

概述

PortalLocker是一个库,它提供了一个简单的文件锁定API

需要注意的一个重要细节是,在Linux和Unix系统上,锁是 默认咨询通过在mount命令中指定-o mand选项 可以在Linux上启用强制文件锁定。这通常不是 但建议有关此主题的详细信息:

该模块当前由rick van hattem<;Wolph@wol.ph>;维护。 项目位于https://github.com/WoLpH/portalocker。缺陷和特性 可以在那里提交请求补丁也很受欢迎。

提示

在某些网络文件系统上,可能需要在关闭文件之前强制执行一个os.fsync(),以便在另一个客户端读取文件之前实际写入该文件。实际上,这可以归结为:

with portalocker.Lock('some_file', 'rb+', timeout=60) as fh:
    # do what you need to do
    ...

    # flush and sync to filesystem
    fh.flush()
    os.fsync(fh.fileno())

示例

要确保缓存生成脚本不会竞争,请使用类:

>>> import portalocker
>>> with portalocker.Lock('somefile', timeout=1) as fh:
    print >>fh, 'writing some stuff to my cache...'

要自定义打开和锁定,也可以使用手动方法:

>>> import portalocker
>>> file = open('somefile', 'r+')
>>> portalocker.lock(file, portalocker.LOCK_EX)
>>> file.seek(12)
>>> file.write('foo')
>>> file.close()

由于文件是自动解除锁定的,因此不需要明确解除锁定 在file.close()之后如果您仍然觉得需要手动解锁文件 你就不能这样做了:

>>> portalocker.unlock(file)

请注意,您的数据可能仍在缓冲区中,因此 只有在flush()close()之后,数据才可用

更多的例子可以在 tests

变更日志

请参阅changelog页。

许可证

请参阅LICENSE文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java操作数组上的字符串   java JAXB内容未实例化   图形在Java中如何绘制垂直居中的字符串?   java Apache Ant:使用Junit时出现NoClassDefFoundError   java无法从服务器上运行perl脚本   如何在java中沿树进行预排序遍历,并打印0和1以对应每个节点上的特定字符?   java如何创建。p12文件?   java线程访问无效   java只匹配命名空间中的XML节点,而不知道NS前缀   从java获取2d arraylist元素   数组Java动态集合对象   java Xpath通过通配符或布尔运算查找以相同名称开头的节点?   java注释元素类型   java在中看不到Super()。反编译后的类文件