码迷,mamicode.com
首页 > 编程语言 > 详细

Python 修改文件

时间:2018-04-22 20:11:37      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:utf-8   style   move   username   run   pen   方便   div   问题   

一、有时候我们会遇到在写入文件后,其实内容并未被写到文件里面的问题

#原因是内容先写到缓冲区,缓冲区满时,才写入磁盘

#解决:用f.flush()强制把缓冲区里面的数据写到磁盘上

fw = open(username.txt,w)

fw.write(测试)

fw.flush()

二、修改文件简单直接的方法(replace()),此方法当文件内容较多时,效率不高,会出现内存溢出的情况

1、打开一个文件,获取到文件的内容read方法(返回类型是str)

2、对内容进行修改

3、清空原来的内容truncate方法

4、把新的内容写到文件

f= open(username.txt,a+)
f.seek(0)#a+模式文件指针默认在文件末尾,用seek(0)将文件指针放到开头
all_str = f.read()#返回类型是str,当文件内容较多时,效率不高
new_str = all_str.replace(123456,789012)#替换文件内容
f.seek(0)
f.truncate()#清空文件内容 f.write(new_str)#将修改后的文件内容写入文件 f.close()#关闭文件

修改文件内容中举例:给文件中的用户名前统一加值test_

 f = open(username.txt,a+)
 f.seek(0)
all_str = ‘‘#每次循环的时候把字符串拼接起来,然后最后写入文件
for line in f:#f.readlines()把文件里面所有的东西一次都读出来放到list里面,文件大的话效率不高
     new_line = ‘test_ + line
     all_str += new_line
 f.seek(0)
 f.truncate()#清空文件内容
 f.write(all_str)
 f.close()

 三、以上修改文件方法当文件小时用起来是比较方便的,但文件大时效率不高,以下介绍一种效率比较高的方法

1、打开两个文件
2、a文件,一行一行修改
3、写一行写到b文件
4、a.txt a.txt.bak
5、删除a文件,b文件的名字改为a文件名
#f.write()只能写字符串
# f.writelines()循环写入,会帮助咱们循环list写入
import os
with open(words,encoding=utf-8) as fr,open(.words.bak,w,encoding=utf-8) as fw:
    for line in fr:
        new_line = line.replace(测试,test)
        fw.write(new_line)
os.remove(words)#删除文件
os.rename(.words.bak,words)#改名

 

Python 修改文件

标签:utf-8   style   move   username   run   pen   方便   div   问题   

原文地址:https://www.cnblogs.com/lamon/p/8908213.html

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