📅  最后修改于: 2023-12-03 15:37:37.989000             🧑  作者: Mango
在Python中,写入文件时,如果不进行任何特殊处理,新写入的内容会覆盖旧内容,这对于一些需要保留历史记录的应用场景来说不太友好。那么如何在写入文件时保留旧内容呢?
在写入文件时,可以使用追加模式(append mode),即打开文件时加上a
参数。这样,新写入的内容会添加到文件末尾,而不会覆盖旧内容。
with open('file.txt', 'a') as f:
f.write('new content')
另一种方法是先读取文件内容,再将新内容和旧内容一起写入文件。这种方法适用于需要对旧内容进行一些处理或者需要按照某种顺序合并新旧内容的场景。
with open('file.txt', 'r+') as f:
old_content = f.read()
f.seek(0)
f.write('new content' + old_content)
代码说明:
r+
参数表示以读写模式打开文件。f.read()
读取文件内容。f.seek(0)
将文件指针移动到文件头,因为写入文件时默认是从文件末尾开始写入。f.write('new content' + old_content)
将新内容和旧内容一起写入文件。如果需要将文件复制到另一个文件并保留旧内容,可以使用shutil库中的copyfileobj()
函数。
import shutil
with open('file.txt', 'r') as f1, open('file_backup.txt', 'w') as f2:
shutil.copyfileobj(f1, f2)
代码说明:
with open('file.txt', 'r') as f1
打开原文件时使用读模式。with open('file_backup.txt', 'w') as f2
打开备份文件时使用写模式。shutil.copyfileobj(f1, f2)
将原文件的内容复制到备份文件中。注意:使用该方法会覆盖备份文件的内容。
综上,以上三种方法都能够在Python中写入文件时保留旧内容,应根据具体场景选择合适的方法。