目前我正在使用这个:
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()
但问题是旧文件比新文件大。所以我最终得到了一个新文件,其中包含旧文件的一部分。
最佳答案
如果您不想关闭并重新打开文件,为了避免竞争条件,您可以 truncate
它:
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()
该功能也可能是 cleaner and safer使用 open
作为上下文管理器,即使发生错误也会关闭文件处理程序!
with open(filename, 'r+') as f:
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
关于python - 在 Python 中读取和覆盖文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2424000/