修改文件有两种方式:一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中

第一种:一次性把文件全部读到,读到内存这个能,这种文件小没什么问题,大文件不好。

实例1:

#、简单、粗暴直接的,一下这个方式有点儿麻烦,打开文件两次
f = open('file.txt','r',encoding='utf-8')
res = f.read().replace('总是','zongshi') #替换内容,生成新文件
f.close()
f = open('file.txt','w',encoding='utf-8')
f.write(res)
f.flush() #立即把缓冲区里面的内容,写到磁盘上,达到立即生效的效果
f.close()

实例2:a+模式修改

f = open('file.txt','a+',encoding='utf-8')
f.seek() #因为是a+模式,指针在最后,所以移到最前面
res = f.read().replace('你','NI')
f.seek() #读完后文件指针又到最后面,所以再移到最前面
f.truncate() #清空文件里面的内容
f.write(res) #写入
f.close()

实例3:r+模式修改

f = open('file.txt','r+',encoding='utf-8')
res = f.read().replace('我','WO')
f.seek()
f.write(res) #自动清空原内容,写入新内容

第二种 :循环读取每一行,有需要改的就改内容,再逐行写入新文件,最后删除旧文件,新文件名改成就文件名

#读每一行后写入新文件,然后删除旧文件,再把新文件改成旧文件名字,需要导入os模块
import os #导入os模块
f = open('file','r',encoding='utf-8')
f2 = open('file_bat.txt','w',encoding='utf-8') #再打开一个文件,一直处于打开状态,所以w模式不会覆盖,会接着往后面写
for line in f:
newline = line.replace('一点','两点') #将文件中的一点改成两点
f2.write(newline) #写入新文件
f.close() #关闭文件
f2.close() #关闭文件
os.remove('file') #删除file这个文件
os.rename('file_bat.txt','file') #将新文件名字改成file

with写法:

with open('file.txt',encoding='utf-8') as f, open('file.txt.bak','w',encoding='utf-8') as f2:#打开多个文件
for line in f:
new_line = line.replace('二点','一点')
f2.write(new_line) os.remove('file.txt')
os.rename('file.txt.bak','file.txt')

最新文章

  1. Emacs学习心得之 基础配置
  2. run loop 输入源
  3. [Swift2.0系列]Defer/Guard 基础语法
  4. 2014--9=17 软工二班 MyEclipse blue==3
  5. Action Filters for ASP.NET MVC
  6. A Case for Flash Memory SSD in Enterprise Database Applications
  7. React 学习资源分享 菜鸟刚学5天 博客写的不多 不懂写博客的套路
  8. SQL省市区三级表结构
  9. Sesson禁止使用Cookie
  10. js进度条小事例
  11. SpringBoot入门:新一代Java模板引擎Thymeleaf(理论)
  12. oldboy s21day07(深浅拷贝及文件操作)
  13. Docker安装MySQL数据库
  14. tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)
  15. Spring Boot最核心的27个注解,你了解多少?
  16. Excel 逻辑函数if使用方法
  17. 剑指offer:1.找出数组中重复的数(java版)
  18. 将WORD2010文件标记为最终状态
  19. ElasticSearch入门3: 高级查询
  20. PHP算法------排序

热门文章

  1. openssl实现CA自签证书和颁发数字证书
  2. PentesterLab渗透演练平台
  3. 前端异常监控 - BadJS
  4. vue事件处理器
  5. maven一键部署tomcat war包
  6. Java如何检查日期格式是否正确?
  7. Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法
  8. [Artoolkit] Android Sample of nftSimple
  9. Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)
  10. python3之文件操作