用Python替换文件内容

时间:2014-08-04 09:22:32

标签: python

我想这已经问了两万次问题了,但是我无法理解为什么文件总是空的。我想打开一个文件,从整个文件中删除一个字符串,然后重写内容,但文件最终为空。这是我使用的代码:

f = open(filename,'w+')
f.write(f.read().replace(str_to_del,""))
f.close()

但文件总是空的。如果我改为使用“r +”,则会附加内容,并且文件中有重复的文本。我正在使用Python 3.3。我错过了什么?

1 个答案:

答案 0 :(得分:3)

w+模式打开文件会截断文件。因此,您的f.read()保证不返回任何内容。

您可以通过在r+模式下打开文件,阅读文件,然后调用f.seek(0),然后编写来完成此操作。或者以r模式打开文件,阅读文件,关闭文件,以w模式重新打开文件,然后编写文件。或者更好的方法是,通过编写一个临时文件并将其移到原始文件上(这会给你"原子"行为 - 不可能以半写文件结束)。