攻克python3-文件操作
1.文件的打开方式
w:文件以只写的方式打开,并且清空文件,如果没有改文件直接创建。
r:文件也只读方式打开,不可写。
w+:文件以写读模式打开,并且清空文件,可写可读
r+:文件以读写模式打开,可读可写,是追加写模式
a:文件以只写模式打开,不可读,是追加写模式
a+:文件以读写模式打开,可读可写,是追加写模式
wb,rb,wb+,rb+,ab,ab+读写模式均以不加b一样,只是文件的格式为二进制
2.文件的写入
#f=open('data','w',encoding="utf-8")#文件句柄 #覆盖写 #f.write("我爱北京天安门\n") #f=open('data','a',encoding='utf-8') #追加写 #f.write('天安门前太阳升') #f.writelines(list) #写入一个列表 #f=open('data','wb') #以二进制格式覆盖写 #f.write("我爱北京天安门\n".encode()) #f=open('data','ab') #f.write('天安门前太阳升\n'.encode()) #以二进制格式追加写 #print(f.writable()) #判断该文件是否可写
3.文件的读取
#f=open('data','r',encoding='utf-8') #print(f.read()) #全部读出 #print(f.readlines()) #全部读出以列表形式保存,每一行为一个元素 #print(f.readline()) #以行为单位读出,以字符串的格式保存 #print(f.readable()) #判断该文件是否可读
#二进制读取
#f=open('data','rb+')
#f.write("我爱北京天安门\n".encode())
#print(f.readline())
4.文件的指针操作
f=open("data2","r+",encoding='utf-8') #文件的读写模式 f.write("-------da---------\n") f.write("-------da---------\n") f.write("-------da---------\n") f.write("-------da---------\n") f.write("-------da---------\n") print(f.read()) print(f.tell()) #判断当前文件指针的位置 f.seek(10) #移动文件指针的位置 print(f.tell()) print(f.read())
#任务现在我要从第10个字节开始修改内容
print(f.tell())
f.seek(20)
print(f.tell())
f.write("我修改的内容\n")
f.seek(0)
print(f.read())
print(f.tell())
5.文件内容的修改
修改文件内容我们不通过移动文件指针的方式进行修改,因为通过文件指针修改,会把我们不需要修好的内容覆盖掉
通过创建一个新文件,利用两个文件,一遍读一遍写的方式,修改内容
with open("data",'r',encoding='utf-8') as f,\ open('data2','w',encoding='utf-8') as f2: find_str="夜晚的微风" replace_str='我爱你' for line in f: if find_str in line: line=line.replace(find_str,replace_str) f2.write(line)
6.文件的其他操作
f=open("data2",'a',encoding='utf-8') f.write("chose1\n") f.flush() #强制刷新进入硬盘,不需要在缓存等待 f.truncate(10) #清除,只保留前10个字节数据,其他清除
文件写入的过程,不是输入一个数据就写入一个数据,而是将这些输入的数据存入缓存中,当这些数据的大小达到某个值是,在一起写入硬盘,flush的作用是不要你在缓存区等待,只有你输入就立刻写进硬盘