举个例子,现在我有一个文件a.txt
a.txt的内容为:
aaaaassssssddddddddddd
现在,我想将a.txt中的's'字符替换为'z'字符
一个写法如下:
# a.py
str = None
with open('a.txt', 'r') as f:
str = f.readline()
operation_need_many_time()#这是一个费时操作
str = str.replace('s','z')
with open('a.txt', 'w') as f:
f.write(ste)
在没有其他程序的干扰下,a.py能够实现我需求的功能
但是假设有b.py,实现将'd'字符变成'x'字符
# b.py
str = None
with open('a.txt', 'r') as f:
str = f.readline()
operation_need_many_time()#这是一个费时操作
str = str.replace('d','x')
with open('a.txt', 'w') as f:
f.write(ste)
那么如果此时同时运行a.py和b.py,看起来会得到错误的结果
那么如何在a.py运行时锁上a.txt这个文件?
即,在a.py运行时,其他程序不能对a.txt进行写操作
我再网上查如何如何给文件加锁,查到的是使用fcntl.flock
但是我也看到这个是个建议锁,假如a.py的编写者很机智检测了,而b.py的编写者是个初学者,没有进行检测,那似乎也没什么效果
提前感谢回答的各位