fw.flush() #强制把缓冲区里面的数据写到磁盘上例:fw = open('username','w')fw.write('hhh')fw.flush()(解决问题:写文件时可能写入不到文件中)
#替换文件内容
一、简单粗暴(弊端:文件比较大时,占内存太大,运行速度缓慢)
1、打开一个文件,获取到他的所有内容(磁盘 -> 内存)2、对内容进行修改3、清空原文件的内容4、把新内容写进文件
f = open('username','a+')f.seek(0)all_str = f.read()new_str = all_str.replace('123456','78910')f.seek(0)f.truncate() #清空文件内容f.write(new_str)f.close()
例:在每行添加一个字符串‘str_'f = open('username','a+')f.seek(0)all_str = ''for i in f: all_str = all_str + 'str_'+ if.seek(0)f.truncate() #清空文件内容f.write(all_str)f.close()
二、打开两个文件
1、打开两个文件2、a文件3、写一行写到b文件4、a.txt a.txt.bak5、删除a文件,b文件名字改成a文件名,进行替换
例:修改文件,把文件words 里面的a 全部改成 b
import oswith open('words',encoding = 'utf-8') as f,open('word','w',encoding = 'utf-8') as ff: for line in f: n_line = line.replace('a','b') #将'a' 替换成'b' ff.write(n_line)os.remove('words') #删除文件os.rename('word','words') #修改文件名,将'words' 替换成 'word'
#.writelines() 和 write() 的区别:
f.write() #只能写字符串f.writelines() #会帮助我们进行写循环一次(仅一次),可以自动循环列表进行写入(如: f.writelines(['12345','4534'])
注:for line in f: 和 for line in f.readlines() 的区别for line in f: ---- 一行一行的读取;效率高for line in f.readlines() -------- 一次性读取
转载于:https://www.cnblogs.com/lynn-chen/p/8981874.html