在Python中读取和覆盖文件
发布于 2021-01-29 15:06:11
目前,我正在使用此:
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()
但是问题在于旧文件大于新文件。因此,我最终得到了一个新文件,该文件的末尾有旧文件的一部分。
关注者
0
被浏览
83
1 个回答
-
如果您不想关闭并重新打开文件,为避免出现竞争情况,可以
truncate
这样做:f = open(filename, 'r+') text = f.read() text = re.sub('foobar', 'bar', text) f.seek(0) f.write(text) f.truncate() f.close()
该功能将很可能也更清洁和更安全的使用
open
作为一个上下文管理器,这将关闭该文件处理程序,即使出现错误!with open(filename, 'r+') as f: text = f.read() text = re.sub('foobar', 'bar', text) f.seek(0) f.write(text) f.truncate()