最近因为在做的小软件不同的进程之间需要操作同一个资源文件,于是便想到了使用文件锁。

最后找到了Unix独有的python模块“fcntl”,最开始在win开发环境使用它,却总是报错缺少这个模块,后来才知道这个模块只有Unix才有,于是开Linux虚拟机才最终正常使用,而我的程序生产环境也正好是Linux。在使用“fcntl”模块中要注意,锁定文件要在打开文件句柄之后,而解锁文件则要在关闭文件之前。

示例代码:

import fcntl
file = open('test.txt','r',encoding="utf-8")   #读取一定要指定编码格式!
fcntl.flock(file,fcntl.LOCK_EX)
#  ... 操作文件...
fcntl.flock(file,fcntl.LOCK_UN)
file.close()   #文件关闭一定要在解锁之后