Python小册子-文件操作
【文件基本操作】
data = open("yesterday2",encoding="utf-8").read() #直接打开文件读取文件内容 f = open("yesterday",encoding="utf-8") #f叫文件句柄,文件的内存对象,包含文件名、大小、内存的起始位置等 data = f.read() #文件读完一遍,指针指到最后 data2 = f.read() print(data) print("data2".center(50,'-')) print(data2) #此处没有文件的打印输出 f.write("我爱北京天安门") f2 = open("yesterday2",'w',encoding='utf-8') data = f2.read() print(data) f1 = open("yesterday2",'a',encoding="utf-8") #“a”是往文件后追加,也不可读 for i in range(10): f1.write("Yui hatano\n") f1.close()#关闭文件 #逐行读文件 f = open("yesterday2",'r',encoding="utf-8") for i in range(5): print("打印前5行:",f.readline()) #readlines把文件逐行存在list中,每行行尾加上\n,readlines只适合读小文件 #print(f.readlines()) #这种方式,文件已经读到最后,所以后面的打印不出来 for index,line in enumerate(f.readlines()): if index == 9: print("我是分割线!".center(50,'-')) continue print(index+1,"通过readlines逐行打印:",line.strip()) #high level 效率最高 f = open("yesterday2",'r',encoding="utf-8") print(f.tell()) count = 0; for line in f: if count == 9: print("我是分割线".center(50,'-')) count += 1 continue print(line) f = open("yesterday2",'r',encoding="utf-8") print(f.tell()) print(f.read(5)) print(f.tell()) print(f.readline()) print(f.readline()) print(f.readline()) print(f.tell()) f.seek(0) #seek里面的参数里面可以是其他字符,例如,seek(6)回到第6个字符 print(f.encoding) #文件编码 print(f.name) #获取文件名 print(f.seekable()) #判断文件句柄是否可以移动,是返回true f.flush() #强制刷新内存数据到硬盘 import sys,time for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.3) #truncate()截断 从头开始截断字符,例如:f.truncate(10),截取从头开始10个字符 print(f.truncate(10)) f = open("yesterday3",'r+',encoding="utf-8") #文件句柄,读写 最常用 f = open("yesterday3",'w+',encoding="utf-8") #文件句柄,写读 f = open("yesterday3",'a+',encoding="utf-8") #文件句柄,追加读写 f = open("yesterday3",'rb') #文件句柄,读二进制文件,所以不需要编码的方式 f = open("yesterday3",'wb') #文件句柄,写二进制文件,所以不需要编码的方式 f = open("yesterday3",'ab') #文件句柄,追加写二进制文件,所以不需要编码的方式 f.write("hui hatano is my favarite superstar\n".encode()) f.close() #修改文件,先把旧文件打开读,打开新的文件写,判断是否需要修改的行,然后写到新文件 f = open("yesterday3",'r',encoding="utf-8") f_new = open("yesterday_new",'w',encoding="utf-8") for line in f: if "lyon like hatano" in line: line = line.replace("lyon like hatano","Lyon love Yui hatano") f_new.write(line) f.close() f_new.close()