一、文件读写有缓冲区
1 fw = open('nhy','w') 2 fw.write('sdfsdf') 3 fw.flush()# 把缓冲区里面的数据立即写到磁盘上 4 fw.close()
二、with的用法,可直接打开文件进行读写,读写完成之后会主动关闭文件
打开多个文件时,使用逗号隔开即可。
1 with open('nhy','w') as fw, open('nhy2','w') as fw2: 2 fw.read() 3 fw.write('xxx')
三、文件修改
1、简单粗暴直接
(1)先获取到文件里面所有的内容
(2)然后修改内容
(3)清空原来文件里面的内容
(4)重新写入
举例如下:
1 f = open('user-pwd.txt','a+') 2 f.seek(0) 3 all_data = f.read() 4 new_data = all_data.replace('123','python') 5 f.seek(0) 6 f.truncate()# 清空文件内容 7 f.write(new_data) 8 f.flush() 9 f.close()
2、高效的处理方式
words words_new
(1)先打开原来的文件,再打开一个空文件
(2)循环处理原来文件里面的每一行数据,处理完之后写到新文件里面
(3)把原来的文件删除,把新文件的名字改成原来文件的名字
1 import os 2 with open('words',encoding='utf-8') as fr,open('.words','w',encoding='utf-8') as fw: 3 for line in fr: 4 line = line.lstrip()# 去掉左边的空格 5 if line:# 判断这一行是否有数据 6 line = line.replace('你','you')# 替换数据 7 fw.write(line)# 写到新文件里面 8 os.remove('words')# 删除原来的文件 9 os.rename('.words','words')#把新文件的名字改成原来文件的名字
四、读取文件全部内容,按行显示
1 f = open('user-pwd.txt',encoding='utf-8') # 文件句柄,文件对象 2 3 for line in f: #直接循环文件对象 4 print('line:',line)
修改大文件的时候,可以用with
with open('user.txt',encoding='utf-8') as f: #文件对象,文件句柄 for line in f: line = line.strip() if line: print(line)