码迷,mamicode.com
首页 > 其他好文 > 详细

文件修改

时间:2018-09-21 23:16:16      阅读:376      评论:0      收藏:0      [点我收藏+]

标签:删掉   一个   无法   import   写入   不能   临时   pre   open   

# _*_ 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‘)

文件修改

标签:删掉   一个   无法   import   写入   不能   临时   pre   open   

原文地址:https://www.cnblogs.com/OutOfControl/p/9688640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!