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

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

实例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')

day4_修改文件的更多相关文章

  1. 文件IO操作..修改文件的只读属性

    文件的IO操作..很多同行的IO工具类都是直接写..但是如果文件有只读属性的话..则会写入失败..所以附加了一个只读的判断和修改.. 代码如下: /// <summary> /// 创建文 ...

  2. 【转】linux查看及修改文件权限以及相关

    linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有 ...

  3. 在win7环境下批量修改文件权限

    在附件->命令提示符->右键->以管理员身份运行 进入你需要修改的文件位置,然后输入下面两条命令 takeown /f * /A /R icacls * /t /grant:r ev ...

  4. Linux文件类型及如何查看,修改文件读写权限

    现在使用 ls -l 命令,查看详细信息格式的文件列表,您将会看到如下内容: total 5drwxr-x---  4   user group 4096 Mar 10 00:37 filenamed ...

  5. linux系统下修改文件夹目录权限

    linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

  6. ubuntu下修改进入root用户和修改文件权限

    (1)进入root用户 su root 密码:设置的root密码 (2)修改文件权限 sudo chmod +777  file (3)执行shell ./shellfile (4)编写shell 第 ...

  7. 使用Inno Setup函数修改文件内容

    0.inno打开文件操作&字符串操作所需函数原型及解释 function LoadStringsFromFile(const FileName: String; var S: TArrayOf ...

  8. 60-chmod 修改文件的权限

    修改文件的权限 chmod [options] who operator permission file-list (符号模式) chmod [options] mode file-list (绝对模 ...

  9. Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...

随机推荐

  1. 动软 生成 linq相关DAO

    第一步:新建自定义模板 <#@ template language="c#" HostSpecific="True" #> <#@ outpu ...

  2. 项目在iOS11上遇到的小问题

    ​iOS11正式版出了这么久了,在忙完新版本开发,写下在iOS11上的一些小问题. 1  App图标不显示 现象:升级到iOS11系统下自己的项目桌面app图标不见了 出现这种情况我还以为自己手动删除 ...

  3. Asp.Net T4模板生成三层架构

    1.T4 Editor安装 T4:根据模板生成文件,例如model等 vs中默认t4模板编码是没有提示和高亮的,需使用以下插件,免费的 https://t4-editor.tangible-engin ...

  4. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求(转)

    通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebRe ...

  5. 开源网络库ACE、Boost的ASIO、libevent、libev、ZeroMQ

    开源C/C++网络库:ACE          C++语言 跨平台Boost的ASIO  C++语言 跨平台libevent     C语言   主要支持linux,新版增加了对windows的IOC ...

  6. hbase源码系列(十五)终结篇&Scan续集-->如何查询出来下一个KeyValue

    这是这个系列的最后一篇了,实在没精力写了,本来还想写一下hbck的,这个东西很常用,当hbase的Meta表出现错误的时候,它能够帮助我们进行修复,无奈看到3000多行的代码时,退却了,原谅我这点自私 ...

  7. Vue.js常用指令:v-on

    一.v-on指令 v-on指令在Vue.js中用来处理对应的事件.用法: v-on:事件类型="函数体" 例如:点击按钮的时候执行play事件 <button v-on:cl ...

  8. Oracle中dual表的用途介绍-转

    读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情. dual是一个虚拟表,用来构成select的语法规则,oracle保 ...

  9. Nginx配置详细

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  10. hibernate 查询全部数据的三种方法

    1.Query对象 使用Query对象需要写hql语句,使用hql语句操作的是实体类和属性. 用于查询全部的hql语句:from 实体类名称   例:String hql = "from U ...