# 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是截断指针后面的内容,舍弃多余的部分。

(adsbygoogle = window.adsbygoogle || []).push({});