Python-文件处理-文件修改应用案例
原update.txt文件内容如下:
张一蛋 山东 179 49 12344234523
李二蛋 河北 163 57 13913453521
王全蛋 山西 153 62 18651433422
需修改文件内容第一行为张一蛋<男妇女主任> 山东 179 49 12344234523
with open(r'update.txt',mode="tr+",encoding="utf-8") as tr:
tr.seek(9,0) #指针的移动都是以bytes为单位,一个中文字符占用3个bytes字节
tr.write("<男妇女主任>")
#查看修改后第一行内容:张一蛋<男妇女主任>9 49 12344234523,直接是覆盖了原来的数据了
注意:
1.对于硬盘上的数据是不能直接修改
2.硬盘上的数据都是用新的覆盖旧的
3.平常的数据修改都是操作内存的(内存能不能改,比如变量的定义)
文件修改的两种方式
方式一: 文本编辑器采用的这样方式
原update1.txt文件内容如下:
wo shi llj
llj shi wo
hahaha
错误的方式:open打开文件w模式会直接清空文件的
with open(r'update1.txt',mode="tr",encoding="utf-8") as tr, \
open(r"update1.txt",mode="tw",encoding="utf-8") as tw:
res=tr.read()
#print(res)
r=res.replace("llj","liang")
tw.write(r)
正确的方式
with open(r'update1.txt',mode="tr",encoding="utf-8") as tr:
res=tr.read()
#print(res)
r=res.replace("llj","liang") #修改完数据存放在内存中
with open(r"update1.txt",mode="tw",encoding="utf-8") as tw:
tw.write(r)
方式二:
import os
with open(r"update1.txt",mode="tr",encoding="utf-8") as tr,\
open(r".update1.txt.swap",mode="tw",encoding="utf-8") as tw:
for tr_line in tr:
tw.write(tr_line.replace("llj","liang")) #同一时间内存只有一行数据
os.remove('update1.txt')
os.rename(".update1.txt.swap","update1.txt")

浙公网安备 33010602011771号