使用文件锁来控制对文件的访问权限。在Python中,可以使用flock()函数来实现文件锁。下面是一个代码示例:
文件1:write_file.py
import fcntl
with open('data.txt', 'a') as f:
fcntl.flock(f, fcntl.LOCK_EX) # 获取写锁
f.write('hello world\n')
fcntl.flock(f, fcntl.LOCK_UN) # 解锁
文件2:read_file.py
import fcntl
with open('data.txt', 'r') as f:
fcntl.flock(f, fcntl.LOCK_SH) # 获取读锁
data = f.read()
fcntl.flock(f, fcntl.LOCK_UN) # 解锁
print(data)
在write_file.py中,使用fcntl.flock(f, fcntl.LOCK_EX)获取写锁,表示该程序要对文件进行写操作。写锁被获取后,其他程序就无法同时对该文件进行写操作,只能等待锁释放。在write_file.py写完文件后,使用fcntl.flock(f, fcntl.LOCK_UN)解锁,表示该程序完成了对文件的写操作,可以让其他程序对该文件进行操作。
在read_file.py中,使用fcntl.flock(f, fcntl.LOCK_SH)获取读锁,表示该程序只需要对文件进行读操作。读锁和写锁互相不影响,所以可以同时存在。在读完文件后,使用fcntl.flock(f, fcntl.LOCK_UN)解锁,表示该程序完成了对文件的读操作。
使用文件锁可以确保对同一文件进行读写操作时不会出现冲突,保证程序的正确性。