# Python中常见问题
# Read and overwrite a file in Python
使用r+
模式可以以读写的模式操作打开的文件
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()
如上可以向文件中写入修改后的内容,但是当要写入的内容大小小于原文件中的内容时,将会造成多余的部分还残留在文件中。
# source.txt
# This is foobarweb.
# 如上代码执行后内容变为
# This is barbarweb.
这种情况下应该使用truncate
函数,如下
with open(filename, 'r+') as f:
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
这样就可以满足功能了。其中seek
是移动文件描述符所指向的位置,seek(0)
表示移动到文件的开头,truncate
是截断指针后面的内容,舍弃多余的部分。