第一种方法,简单直接粗暴的,缺点就是如果文件非常大时,把所有内容都读出来,会非常占用内存:
f = open('a.txt','a+',encoding='utf-8') # 不能用w+,用w+直接给文件清空了,读不出来内容了 f.seek(0) result = f.read() new_result = result.replace('abc','ABC') f.seek(0) f.truncate() #清空文件内容 f.write(new_result) f.close()
第二种方法,读模式打开一个文件1,写模式打开一个文件2,逐条处理文件1中的内容,再逐条写入文件2:
import os f1 = open('a.txt',encoding='utf-8') f2 = open('a2.txt','w',encoding='utf-8') for line in f1: new_line = line.replace('abc','ABC') f2.write(new_line) f1.close() f2.close() os.remove('a.txt') os.rename('a2.txt','a.txt')
第二种方法可以简化为下面的写法:
import os with open('a.txt',encoding='utf-8') as f1,open('a2.txt','w',encoding='utf-8') as f2: for line in f1: new_line = line.replace('ABC', 'abc') f2.write(new_line) os.remove('a.txt') os.rename('a2.txt','a.txt')
上述的方法,如果是比较小的文件修改时,用第一种就可以,大文件就需要用第二种方法了
标签:文件,f1,python,修改,new,line,txt,os From: https://www.cnblogs.com/cindylpp/p/18156033