如果没有fcntl模块则用

sudo pip install fcntl安装

模块简单说明:

打开文件,不存在则创建之

f = open('./test','w')

fcntl.flock(f,fcntl.LOCK_EX)

这样就对文件test加锁了,如果有其他进程对test文件加锁,则不能成功,会被阻塞,但不会退出程序。

解锁:fcntl.flock(f,fcntl.LOCK_UN)

fcntl模块:

flock() : flock(f, operation)

operation : 包括:

fcntl.LOCK_UN 解锁

fcntl.LOCK_EX 排他锁

fcntl.LOCK_SH 共享锁

fcntl.LOCK_NB 非阻塞锁

LOCK_SH 共享锁:所有进程没有写访问权限,即使是加锁进程也没有。所有进程有读访问权限。

LOCK_EX 排他锁:除加锁进程外其他进程没有对已加锁文件读写访问权限。

LOCK_NB 非阻塞锁:

如果指定此参数,函数不能获得文件锁就立即返回,否则,函数会等待获得文件锁。

LOCK_NB可以同LOCK_SH或LOCK_NB进行按位或(|)运算操作。

fcnt.flock(f,fcntl.LOCK_EX|fcntl.LOCK_NB)

实例代码:

1 #!/usr/bin/python

2 #coding:utf8

3

4 importos5 importsys6 importtime7 importfcntl8

9 classFLOCK(ojbect):10 def __init__(self,name):11

12 self.fobj = open(name,'w')13 self.fd =self.fobj.fileno()14

15 deflock(self):16 try:17 #给文件加锁,使用了fcntl.LOCK_NB

18 fcntl.lockf(sefl.fd,fcntl.LOCK_EX|fcntl.LOCK_NB)19 print '给文件加锁,稍等 ... ...'

20 time.sleep(20)21 returnTrue22 except:23 print '文件加锁,无法执行,请稍后运行。'

24 retrun False25

26 defunlock(self):27 self.fobj.close()28 print '已解锁'

29

30 if __name__ == "__main__":31 print sys.argv[1]32 locker = FLOCK(sys.argv[1])33 a =locker.lock()34 ifa:35 print '文件已加锁'

36 else:37 print '无法执行,程序已锁定,请稍等'

执行结果:

# python lock.py test

test

file lock please waiting..... (在等待期间,在另一个终端,运行此程序会有下面的结果)

文件已加锁

# python lock.py test

test

file no lock please check file...

无法执行,程序已锁定,请稍等

python os 文件锁_python 中给文件加锁——fcntl模块相关推荐

  1. python 中给文件加锁——fcntl模块

    如果没有fcntl模块则用 sudo pip install fcntl安装 模块简单说明: 打开文件,不存在则创建之 f = open('./test','w') fcntl.flock(f,fcn ...

  2. python os 遍历 子目录中所有文件_Python处理文件系统的10种方法 !

    通过一个能够实现与文件系统进行交互的Python程序,我们可以实现很多有趣的应用,但是大部分人并不知道如何实现这种交互.本文为相关研发人员和数据科学家提供了一个实现指南,并重点介绍10个基本的os和s ...

  3. python os 常用方法_python中os常用方法详解

    os的官方解释 os os: This module provides a portable way of using operating system dependent functionality ...

  4. python语句结束符_python中判断文件结束符的具体方法

    python中判断文件结束符的方法:可以使用try except语句块来进行判断. 具体使用方法:[try:while True:s = input() except EOFError: pass]. ...

  5. python去除空行_Python中去除文件空行(strip)

    原博文 2013-10-10 13:09 − 最近在看Python基础教程的第一个项目,第一步就是将文件划分为所谓的block块,然后依次进行处理. 而实例给出的两段代码并没有看出直接的判断空行或者类 ...

  6. python 队列实现_python中实现队列的queue模块

    python中的queue模块提供了同步的.线程安全的队列类,包括FIFO(先进先出)的Queue类和LIFO(后进先出,栈结构)LifoQueue类和优先队列PriorityQueue类,它们都实现 ...

  7. python print 如何加锁_python中给程序加锁之fcntl模块的使用

    python 中给文件加锁--fcntl模块 import fcntl 打开一个文件 f = open('./test') ##当前目录下test文件要先存在,如果不存在会报错. 对该文件加密: fc ...

  8. python 加锁_python之给文件加锁(fcntl模块)

    对该文件加密:fcntl.flock(f,fcntl.LOCK_EX) 这样就对文件test加锁了,如果有其他进程对test文件加锁,则不能成功,会被阻塞,但不会退出程序. 解锁:fcntl.floc ...

  9. python显示目录中的文件_Python中的文件和目录操作实现

    Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...

最新文章

  1. 【攻防世界017】re4-unvm-me
  2. Python--简单的端口扫描脚本
  3. 学python后做什么工作好_学习完Python课程后可以做什么工作?
  4. LeetCode 1771. 由子序列构造的最长回文串的长度(最长回文子序)
  5. 计算理论 形式语言与自动机_下推式自动机(PDA)| 计算理论
  6. 趣说技术 | 用MQ 能完全替代 RPC 调用?
  7. 3800元新机要凉了?预售惨淡,手机界老大哥的面子往哪儿搁?
  8. 用OFFICE 2007发送的文章
  9. Atitit knowmng file list知识管理文档索引 目录时索引 part1
  10. 中国石油大学《测井解释与生产测井》第三阶段在线作业
  11. R语言实战笔记后续修改
  12. 【复杂网络】当机器学习遇上复杂网络:解析微信朋友圈 Lookalike 算法
  13. 获取post请求的数据
  14. 一个农村小伙的淘宝创业故事
  15. APP弱网络条件下,体验优化之道
  16. 淘宝旺旺号转userid 或 uid 接口与方法
  17. 三分钟带你搞懂什么是向上转型和向下转型
  18. http报头之通用报头,请求报头,响应报头和实体报头
  19. Apache ECharts的缘起和发展
  20. Zephyr与Linux线程切换

热门文章

  1. python数字图像处理(1):环境安装与配置
  2. JQuery进阶学习
  3. 类模板实现基于数组的栈
  4. react native中一次错误排查 Error:Error: Duplicate resources
  5. 复习日记-validate表单校验插件/菜单管理dTree
  6. 数据仓库分层ODS DW DM 主题 标签
  7. 浏览器兼容--条件样式,选择符前缀,样式属性前缀(转)
  8. JS面向对象,创建,继承
  9. SolrCloud6.1.0之SQL查询测试
  10. Android 的 init.rc 文件简介【转】