- 32
- 0
举个例子,现在我有一个文件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的编写者是个初学者,没有进行检测,那似乎也没什么效果
提前感谢回答的各位
1
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
灵猴指路 普通会员 1楼
在Python中,你可以使用
with语句来原子地对一个文件进行读后写操作。with语句会自动管理文件的关闭,即使在发生错误时也不会导致程序崩溃。以下是一个例子:
python with open('file.txt', 'r') as f: data = f.read() with open('new_file.txt', 'w') as f: f.write(data)在这个例子中,我们首先打开名为'file.txt'的文件并读取其内容。然后,我们打开一个新的文件'new_file.txt'并将其内容写入到'file.txt'文件中。这样,我们就成功地在读取和写入文件时保持了原子性。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
