标签:name for line 打开 utf-8 删掉 修改文件 临时文件 enc
# 文件a.txt内容如下 张一蛋 山东 179 49 12344234523 李二蛋 河北 163 57 13913453521 王全蛋 山西 153 62 18651433422 # 执行操作 with open(‘a.txt‘,mode=‘r+t‘,encoding=‘utf-8‘) as f: f.seek(9) f.write(‘<妇女主任>‘) # 文件修改后的内容如下,这里的
<妇女主任>是占用了原来空格的地方
张一蛋<妇女主任> 179 49 12344234523
李二蛋 河北 163 57 13913453521
王全蛋 山西 153 62 18651433422
# 强调:
# 1、硬盘空间是无法修改的,硬盘中数据的更新都是用新内容覆盖旧内容
# 2、内存中的数据是可以修改的
文件对应的是硬盘空间,硬盘不能修改对应着文件本质也不能修改, 那我们看到文件的内容可以修改,是如何实现的呢?
大致的思路是将硬盘中文件内容读入内存,然后在内存中修改完毕后再覆盖回硬盘 具体的实现方式分为两种:
# 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存
with open(‘db.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
data=f.read()
with open(‘db.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
f.write(data.replace(‘kevin‘,‘SB‘))
# 实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份
import os
with open(‘db.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as read_f, open(‘.db.txt.swap‘,mode=‘wt‘,encoding=‘utf-8‘) as wrife_f:
for line in read_f:
wrife_f.write(line.replace(‘SB‘,‘kevin‘))
os.remove(‘db.txt‘)
os.rename(‘.db.txt.swap‘,‘db.txt‘)
标签:name for line 打开 utf-8 删掉 修改文件 临时文件 enc
原文地址:https://www.cnblogs.com/xialiang37/p/14260299.html