1、对文件操做流程
1.打开文件,获得文件句柄并赋值给一个变量
2.经过文件句柄对文件进行操做
3.关闭文件
2、文件打开模式
f = open("file_test","r",encoding = "utf-8") #打开文件,“读模式”,只能读,获得文件句柄并赋值给一个变量 print(f.read()) #读文件全部内容,读完以后文件光标跳到最后,文件大时慎用 f.close() f1 = open("file_test","w",encoding="utf-8") #写模式,会新建一个file_test文件,再往里写入 f1.write("-------------") f1.close() f2 = open("file_test","a",encoding="utf-8") #追加模式,在原文件内容最后追加,无原文件则新建 f2.write("-------------") f2.close() f3 = open("file_test","r+",encoding="utf-8") #读写模式,写在原文件内容最后追加,无原文件则新建 print(f3.readline()) #按行读 print(f3.readline()) print(f3.readline()) #打印前三行,这个时候光标移动到第三行位置 print(f3.tell()) #打印光标位置 f3.write("--------------") #可是写入仍是文件内容最后写入 f3.close() f4 = open("file_test","w+",encoding="utf-8") #写读模式,,只要是“写在前”都会建一个新文件,在写入 f4.write("----------------------\n") f4.write("----------------------\n") f4.write("----------------------\n") f4.seek(10) #光标移动到10的位置 f4.write("test4") #再写入会将原内容覆盖 f4.seek(0) #将光标移动到开头的位置 print(f4.read()) f4.close() #输出 #----------ni hao ----- #---------------------- #---------------------- f5 = open("file_test","a+",encoding="utf-8") #追加读模式,在原文件内容最后追加,无原文件新建 f5.write("----------------------\n") f5.write("----------------------\n") f5.write("----------------------\n") f5.seek(10) #光标移动到10的位置 f5.write("test5") #再写入会在文件内容最后写入 f5.seek(0) print(f5.read()) f5.close() f6 = open("file_test","rb") #以二进制文件格式读这个文件 print(f6.readline()) print(f6.readline()) print(f6.readline()) f6.close() f7 = open("file_test","ab") #以二进制文件格式追加这个文件 f7.write("-------------------\n".encode()) #encode 将str字符转换为bytes f7.write("-------------------\n".encode()) f7.write("-------------------\n".encode()) f7.close() f8 = open("file_test","wb") #以二进制文件格式写这个文件 f8.write("-------------------\n".encode()) #encode 将str字符转换为bytes f8.write("-------------------\n".encode()) f8.write("-------------------\n".encode()) f8.close() #注:还有rU或r+U模式,"U"表示在读取时,能够将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
3、文件循环python
#按行循环,而且将第五行替换 f = open("file_test","r",encoding="utf-8") count = 0 for line in f: count += 1 if count == 5: print("----分割线----") continue print(line.strip()) #strip是去除行首行尾的空格符和换行符 f.close() #f.readlines() #切记用f.readlines是先将文件转换为列表,若是文件太大时对内存消耗太大
4、文件的修改缓存
#打开一个文件,修改完了写到一个新文件 f = open("file_test","r",encoding="utf-8") f_new = open("file_new","w",encoding="utf-8") for line in f: #按行取出,每行都是一串字符串 if "fengxiaoli" in line: line = line.replace("fengxiaoli","FENGXIAOLI") #对字符串进行操做,J f_new.write(line) f.close() f_new.close()
5、flush方法ide
f = open("file_test","w",encoding="utf-8") f.write("hello\n") f.write("hello\n") f.write("hello\n") f.flush() #当往文件写内容的时候,会有一个缓存,达到一个时间,一次往文件写入。若是这时候断电可能内容并无写入成功,flush刷新会当即执行
6、with语句编码
#with语句做用,为了不打开文件后忘记关闭 with open("file_test","r",encoding="utf-8") as f: #相似于f = open("file_test","r",encoding="utf-8") with open("file_test","r",encoding="utf-8") as f, \ #还能够同时打开多个文件 open("file_test2","r",encoding="utf-8") as f2:
7、其余操做
spa
f = open("file_test","r",encoding="utf-8") print(f.tell()) #打印光标位置,按字符计数 print(f.readline()) #按行读 print(f.read(10)) #按字符读 print(f.tell()) f.seek(0) #把光标回到开头 f.seek(12) #把光标移动到12个字符的位置 print(f.readline()) print(f.encoding) #打印文件编码 print(f.isatty()) #判断文件是不是终端设备,返回Ture or false print(f.seekable()) #判断是否能移动文件光标,返回Ture or false print(f.readable()) #判断文件是否可读 print(f.writable()) #判断文件是否可写 # f = open("file_test","a",encoding="utf-8") # f.truncate(12) #从头开始截取多少字符