我想这个问题已经被问了两万次了,但我不明白为什么文件总是空的。我想打开一个文件,从整个文件中删除一个字符串,然后重写内容,但文件最终是空的。这是我使用的代码:
f = open(filename,'w+')
f.write(f.read().replace(str_to_del,""))
f.close()
但文件始终为空。如果我改为使用“r+”,则会附加内容,并且文件中会有重复的文本。我正在使用 Python 3.3 。我错过了什么?
最佳答案
以 w+
模式打开文件会截断文件。因此,您的 f.read()
保证不会返回任何内容。
您可以通过以r+
模式打开文件、读取它、然后调用f.seek(0)
、然后写入来完成此操作。或者以 r
模式打开文件,读取它,关闭它,以 w
模式重新打开它,然后写入。或者,更好的方法是编写一个临时文件并将其移动到原始文件上(这会为您提供“原子”行为 - 不可能以半写入的文件结束)。
关于python - 用Python替换文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25115410/