標籤:比較 讀一行 4.0 換行 處理 異常 解碼 位元組 list
一. 檔案操作的基本流程
#1.開啟檔案,得到檔案控制代碼並賦值給一個變數f1=open(‘b.txt‘,‘r‘,encoding=‘utf-8‘)
#2.通過控制代碼對檔案進行操作content=f1.read()print(content)
#3. 關閉檔案**一定要記得加上f1.close()
說明: f1,檔案控制代碼,檔案對象.
open(‘檔案路徑‘),預設開啟檔案r,預設開啟編碼是作業系統的預設編碼:windows是gbk編碼,linux和mac預設是utf-8
二.檔案編碼
三.檔案開啟模式
開啟檔案的模式有:
- r , 唯讀模式,
- w, 唯寫模式,【不可讀,不存在則建立,存在則刪除檔案中的內容】
- a, 追加模式,【不可讀,不存在則建立,存在則只追加內容】
"+" 表示可以同時讀寫某個檔案
"b"表示處理二進位檔案
四.讀取檔案的方式
1.read
1) read當不傳參數的時候,讀取所有內容.注意:當檔案比較大時,會佔用很大的記憶體,不推薦使用.
2) 傳參,如果是以r方式開啟,參數指的是讀取多少個字元
3) 傳參,如果是以rb方式開啟,傳輸指的是讀取多少個位元組.如網路傳輸\圖片\視頻常用rb模式.
假如有檔案a.log,檔案內容為
三月的天氣四月的天氣5月的天氣6月的天氣7月的天氣
例子1:以r模式開啟,read() 會讀取檔案所有的內容.
with open("a.log",encoding="utf-8",mode="r") as f: content=f.read() print(content)運行結果:三月的天氣四月的天氣5月的天氣6月的天氣7月的天氣
例子2:以r模式開啟,read(n),會讀取n個字元
1 with open("a.log",encoding="utf-8",mode="r") as f:2 content=f.read(3)3 print(content)4 5 運行結果:6 三月的
例子3:以rb模式開啟,read(n)會讀取n個位元組
1 with open("a.log",mode="rb") as f:2 content=f.read(3)3 print(content)4 運行結果:5 b‘\xe4\xb8\x89‘
2.readline
一行一行讀,每次讀取一行,不會自動停止
3.for 迴圈
一行一行讀,從第一行開始每次讀一行,督導沒有之後就停止
4.readlines
五.寫檔案
write: 寫內容,參數為字串
writelines:寫內容,參數為列表list
需要注意的問題:
1) w模式開啟,寫的是字元
2) wb模式開啟,寫的是位元組
3) 寫的過程中不會自動換行,需要自己添加分行符號\n
例子:
1 with open(r"b.log",encoding="utf-8",mode="w") as f:2 f.write("假如生活欺騙了你")3 f.writelines(["假如生活欺騙了你\n","不要悲傷,不要心急\n","憂鬱的日子裡須要鎮靜\n","相信吧,快樂的日子將會來臨!\n"])
寫入檔案的內容:
1 題目:假如生活欺騙了你2 假如生活欺騙了你3 不要悲傷,不要心急4 憂鬱的日子裡須要鎮靜5 相信吧,快樂的日子將會來臨!
六.檔案的修改
python修改檔案的步驟
1)開啟原檔案,產生檔案控制代碼
2)建立新檔案,產生檔案控制代碼
3)讀取原檔案,進行修改,寫入新檔案
4)將源檔案刪除
5)新檔案重新命名
1 import os2 with open("b.txt",encoding=‘utf-8‘,mode="r") as f1,3 open("b.txt_bak",encoding="utf-8",mode="w") as f2:4 for i in f1:5 new_content=i.replace("china","Chinese")6 f2.write(new_content)7 os.remove("b.txt")8 os.renames("b.txt_bak","b.txt")
六.檔案中的指標
- seek() : 用來指定當前指標的位置,指的是位元組.注意在utf-8編碼中,一個漢字佔3個位元組
- tell() : 指出當前指標所在的位置
例子:
1 with open("a.log",encoding="utf-8",mode="r") as f: 2 f.seek(3) 3 content=f.read() 4 print(content) 5 print(f.tell()) 6 運行結果: 7 月的天氣 8 四月的天氣 9 5月的天氣10 6月的天氣11 7月的天氣12 73
如果把該例子中的seek(3)改為seek(2),運行會報錯,原因utf-8編碼一個漢字佔3個位元組,如果把指標調到第2個位元組,utf-8解碼時會異常
python基礎09_檔案操作