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) #從頭開始截取多少字符