- # _*_ coding: utf-8 _*_
- # 须知一:
- # 硬盘空间无法修改, 硬盘中的数据更新都是用新的内容覆盖旧的内容
- # 内存空间可以修改
- # with open('a.txt','r+t',encoding='utf-8') as f:
- # f.seek(4,0)
- # print(f.tell())
- # f.write('wocalei')
- # 须知二:
- # 文件对应的是硬盘空间, 硬盘不能修改因为文件本质也不能修改,
- # 我们看到文件的内容可以修改, 是如何实现的
- # 将硬盘中文件内容读入内存, 然后在内存中修改完毕后再覆盖回硬盘
- # 硬盘 -----》内存 (修改)--- 覆盖 ----》 硬盘
- # 具体的实现方式分为两种:
- # 一,
- # 将文件内容发一次性全部读入内存,
- # 然后在内存中修改完毕后再覆盖写回原文件
- # 优点: 再文件修改过程中同一份数据只有一份
- # 缺点: 会过多的占用内存
- # 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 write_f:
- for line in read_f:
- write_f.write(line.replace('SB','kevin'))
- os.remove('db.txt')
- os.renames('.db.txt.swap','db.txt')
文件修改
来源: http://www.bubuko.com/infodetail-2776319.html