# with open('a.txt',mode='r+t',encoding='utf-8') as f:
# print(f.writable())
# f.seek(7,0)
# f.write('SB')
# print(f.writable())
# f.seek(7,0)
# f.write('SB')
# with open('a.txt',mode='r+t',encoding='utf-8') as f:
# f.seek(3,0)
# f.write('h')
# 由上例得出结论:硬盘都是用新内容覆盖旧内容,没有修改的概念,但是内存是可以修改的
# 如何修改文件:
# 思路:把硬盘的内容先读入内存,然后在内存中修改完毕后,再覆盖会硬盘
# 方式一:
# 步骤:
# 1、先将硬盘中文件的内容全部读入内存,然后在内存中修改完毕得到一个修改好的结果
# 2、将修改的结果覆盖回原文件
# 步骤:
# 1、先将硬盘中文件的内容全部读入内存,然后在内存中修改完毕得到一个修改好的结果
# 2、将修改的结果覆盖回原文件
# 优点: 不耗费硬盘
# 缺点:耗费内存
# 缺点:耗费内存
# with open('a.txt',mode='rt',encoding='utf-8') as f1:
# data=f1.read()
# res=data.replace('lxx','SB')
#
# with open('a.txt',mode='wt',encoding='utf-8') as f2:
# f2.write(res)
# data=f1.read()
# res=data.replace('lxx','SB')
#
# with open('a.txt',mode='wt',encoding='utf-8') as f2:
# f2.write(res)
# 方式二:
# 步骤:
#1、循环读取源文件内容,一行行修改一行行写入一个新的临时文件
#2、删除源文件
#3、将临时文件重命名为源文件名
# 步骤:
#1、循环读取源文件内容,一行行修改一行行写入一个新的临时文件
#2、删除源文件
#3、将临时文件重命名为源文件名
# 优点:节省内存
# 缺点:耗费硬盘空间
# import os
# with open('a.txt',mode='rt',encoding='utf-8') as f1,
# open('.a.txt.swp',mode='wt',encoding='utf-8') as f2:
# for line in f1:
# res=line.replace('SB','lxx')
# f2.write(res)
#
# os.remove('a.txt')
# os.rename('.a.txt.swp','a.txt')
# 缺点:耗费硬盘空间
# import os
# with open('a.txt',mode='rt',encoding='utf-8') as f1,
# open('.a.txt.swp',mode='wt',encoding='utf-8') as f2:
# for line in f1:
# res=line.replace('SB','lxx')
# f2.write(res)
#
# os.remove('a.txt')
# os.rename('.a.txt.swp','a.txt')