7. 修改文件的两种方式

一、修改小文件
1、打开一个文件,获取到文件所有内容
2、对内容进行修改:替换、写SQL、列表分割等
3、清空原来文件的内容
4、把新内容写入
f = open('username.txt','a+')
f.seek(0)
all_str = f.read() #读取所有内容,占内存较大
print(all_str)
new_str = all_str.replace('4567889','123456')
f.seek(0) #此时上方read已读到文件最后,清空操作要重新seek到文件开头
f.truncate() #清空文件
f.write(new_str)
f.close()
 
#在每个用户名前面加上syz_
f = open('username.txt','a+')
f.seek(0)
all_str = ''
for line in f:
lines = 'syz_' + line
all_str += lines
f.seek(0)
f.truncate()
f.write(all_str)
f.close()
 
for line in f.readlines():把文件中的所有内容转换成列表放到列表中,占用内存较大
for line in f: 是一行一行的读取内容,占用内存较小
 
二、修改大文件时
这种方法不用开辟一块内存来存文件中的所有数据,直接每一行写入另外一个文件,写完之后删除重命名。
import os
with open('words',encoding='utf-8') as fr,open('.words.bak','w',encoding='utf-8') as fw:
for line in fr:
new_line = line.replace('花','flower')
fw.write(new_line)
os.remove('words') #删除文件
os.rename('.words.bak','words') #改名
 
 
补充:
f.write() #只能写字符串,对与列表中的元素,只能循环写入
f.writelines() #自动循环写入列表、字符串
 
 
原文地址:https://www.cnblogs.com/pengzhuopeng/p/8893908.html