文件打开模式有4种:
1、w写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写,w+,写读模式,只要沾上w,肯定会清空原来的文件
2、r读模式,只能读,不能写,而且文件必须存在,r+是读写模式,只要沾上r,文件必须得存在
3、a追加模式,也是只能写,在文件的末尾添加内容,a+是可以读也可以写,读的时候,文件不存在,不会报错,但是由于a是追加模式,所以最开始文件指针就在最后面,要读的话,需要先把指针移到最前面:
4、rb+、wb+,ab+,这种是二进制模式打开或者读取,一些音乐文件、图片等等
注意:如果在打开的文件的时候,不指定模式,那就是读模式
一.文件操作常用的方法
1.seek方法移到文件指针:
f = open('a.txt','a+',encoding='utf-8')
f.seek(0)
res=f.read()
print(res)
返回结果:
距离是一份考卷
测量相爱的誓言
最后会不会实现
我们为爱还在不学
注意:当文件内容为汉字的时候,需要将字符编码改为utf-8,不然容易报错
2.read方法,读所有的内容,返回的是一个字符串
f = open('a.txt1','r+',encoding='utf-8')
res=f.read()
print(type(res)) #查看read方法返回内容的类型
print(res)
返回结果:
<class 'str'>
MLing
niuniu
zhang
3.readlines方法,读所有的内容,返回的是一个列表
f = open('a.txt1','r+',encoding='utf-8')
res=f.readlines()
print(type(res)) #查看readlines方法返回内容的类型
print(res)
返回结果:
<class 'list'>
['MLing ', 'niuniu ', 'zhang']
4.readline方法,一行一行读取,返回的是字符串
f = open('a.txt1','r+',encoding='utf-8')
res=f.readline()
print(type(res)) #查看readline方法返回内容的类型
print(res)
返回结果:
<class 'str'>
MLing
5.write方法,添加一个字符串
f = open('a.txt1','a+')
f.write('nihao') #添加一个字符串
f.seek(0) #添加内容之后,指针会到最后一个,只有让指针定到最前面,后面才能读到值
print(f.read())
返回结果:
nihao
6.writelines方法,添加一个列表
f = open('a.txt1','a+')
f.writelines(['li', 'jia']) #添加一个列表
f.seek(0) #添加内容之后,指针会到最后一个,只有让指针定到最前面,后面才能读到值
print(f.read())
返回结果:
lijia
二、文件对象循环
直接循环文件对象的话,循环的是文件每一行的内容
f = open('a.txt1','a+')
f.seek(0)
count = 0
for i in f:
print("第%s次是%s"%(count,i))
count+=1
输出结果:
第0次是MLing
第1次是zhangsn
第2次是hanguang
第3次是jiajia
三、修改文件中的内容
1.方法一:先清空在替换
import os
f = open('a.txt','a+',encoding='utf-8')
f.seek(0) #使用a模式的时候,这个指针一定要有的噢
fw=open('a.txt.new','w',encoding='utf-8')
for line in f:
new_line =line.replace('学','不学') #因为读取到为文件内容为字符串,所有内容替换需要用replace方法
fw.write(new_line) #将改过的内容new_line放到fw文件里
f.close() #文件操作结束之后,有打开的文件,对应就要有关闭
f.close() #文件操作结束之后,有打开的文件,对应就要有关闭
os.remove('a.txt') #删除文件
os.rename('a.txt.new','a.txt')
四、
import time
fw = open('python.txt','w',encoding='utf-8')
fw.write('下周不上课!')
fw.flush()#写完之后立马生效
time.sleep(30) #30秒之后,结束运行程序
fw.close()
五、with方法,文件不再用的时候,就会自动给你关闭文件,不需要再每次使用close关闭文件
with open('python.txt',encoding='utf-8') as fr:
print(fr.read())
可以同时打开多个文件:
with open(re[1],'a+', encoding='utf-8') as f1,open(re[1]+'.new','w', encoding='utf-8') as f2: