如何在不覆盖所有内容的情况下编辑文本文件中间的一行?

时间:2012-01-15 08:43:41

标签: python

我编写了一个python脚本,它从txt文件中读取并执行基本任务,如添加新行,删除和编辑现有行。对于删除和编辑,我使用“readlines()”将整个文件作为列表加载,然后使用编辑列表覆盖文件。这增加了数据丢失的可能性。所以我的问题是,如果我可以编辑txt文件而不覆盖它们?

1 个答案:

答案 0 :(得分:4)

传统解决方案是将原始文件复制到.sav文件,然后将新编辑的版本写入原始文件名:

>>> import os
>>> filename = 'somefile.txt'
>>> with open(filename) as f:
        lines = f.readlines()
>>> basename, ext = os.path.splitext(filename)
>>> savefile = basename + '.sav'
>>> os.rename(filename, savefile)
>>> lines = map(str.upper, lines)    # do your edits here
>>> with open(filename, 'w') as f:
        f.writelines(lines)