python 操作文件—2

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_'+ i
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文件名,进行替换

例:修改文件,把文件words 里面的a 全部改成 b

import os
with 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() -------- 一次性读取

猜你喜欢

转载自www.cnblogs.com/lynn-chen/p/8981874.html