python修改文件指定行(先读入内存,再修改)
我们现在有五行数据,我们想把pig替换成cow
我们可以先把数据读到内存里,然后再在内存中修改好以后再写入文档
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2019-04-25 14:35:58
# @Author : 迷风小白
def changetext(a,b):
with open('test','r',encoding='utf-8') as f:
lines=[] # 创建了一个空列表,里面没有元素
for line in f.readlines():
if line!='\n':
lines.append(line)
f.close()
with open('test','w',encoding='utf-8') as f:
for line in lines:
if a in line:
line = b
f.write('%s\n' %line)
else:
f.write('%s' %line)
changetext('pig','cow')
因为之前我修改指定行的数据是通过把其他数据写入新的文件,然后把旧的文件删除,再把新文件改为之前的名字,虽然我知道这种方法有很多局限性,可是当时并没有想到更合适的方法。
现在可以通过先把数据读入到内存中再写入,此方法相比于前一种好多了。