我想这已经问了两万次问题了,但是我无法理解为什么文件总是空的。我想打开一个文件,从整个文件中删除一个字符串,然后重写内容,但文件最终为空。这是我使用的代码:
f = open(filename,'w+')
f.write(f.read().replace(str_to_del,""))
f.close()
但文件总是空的。如果我改为使用“r +”,则会附加内容,并且文件中有重复的文本。我正在使用Python 3.3。我错过了什么?
答案 0 :(得分:3)
以w+
模式打开文件会截断文件。因此,您的f.read()
保证不返回任何内容。
您可以通过在r+
模式下打开文件,阅读文件,然后调用f.seek(0)
,然后编写来完成此操作。或者以r
模式打开文件,阅读文件,关闭文件,以w
模式重新打开文件,然后编写文件。或者更好的方法是,通过编写一个临时文件并将其移到原始文件上(这会给你"原子"行为 - 不可能以半写文件结束)。