標籤:too 常用 for迴圈 迴圈 有一個 檔案操作 bar 修改 with
檔案操作
1.初識檔案操作
2.唯讀(r,rb)
3.唯寫(w,wb)
4.追加(a,ab)
5.r+讀寫
6.w+寫讀
7.a+寫讀(追加寫讀)
8.其他寫作方式
9.檔案的修改以及另一種開啟檔案控制代碼的方式
主要內容:
1.我們可以通過使用open()函數的方式開啟檔案的控制代碼
開啟檔案的方式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b,預設使用r(唯讀模式)
2.唯讀(r和rb)操作
# r模式f = open(‘H:/123.txt‘, mode=‘r‘,encoding=‘UTF-8‘) # 開啟123檔案,用唯讀方式,編碼格式是UTF-8centent = f.read() # 讀取檔案print(centent) # 輸出內容f.close() # 關閉檔案# rb模式f = open(‘H:/123.txt‘, mode=‘rb‘ ) # 開啟123檔案,用唯讀位元組的方式centent = f.read() # 讀取檔案,會讀取出來位元組模式的print(centent) # 輸出內容.輸出位元組形式的f.close() # 關閉檔案
絕對路徑和相對路徑:
絕對路徑:從根目錄下一直到你那個檔案的位置
相對路徑:根據你當前所在位置的路徑
../ 返回上一層
讀取檔案的方式:
read():將檔案中的全部內容全部讀取出來,弊端:占記憶體,如果檔案太大會崩潰
read(n):讀取幾個字元,在rb模式下才是讀取幾個位元組
readline():一次讀取一行,每次讀取的資料後面都有一個\n,需要去除
readlines():會將每一行形成一個元素,放到一個列表裡
最好使用for迴圈的方式開啟
讀取完一定要f.close(),來關閉控制代碼
寫讀檔案的方式(w,wb):
寫的時候要注意,如果沒有檔案,則會建立檔案,如果檔案存在,則會刪除檔案內容,再寫入新的內容
write():寫入內容,在寫入內容的模式下,是無法讀取的
flush():重新整理檔案
wb模式下,可以不指定開啟檔案的編碼,但是在寫入的時候必須將字串,轉換為UTF-8的bytes資料
encode(編碼):字元通過編碼成為自節
decode(編碼):位元組通過解碼成為字元
追加(a,ab)
在追加模式下. 我們寫入的內容會追加在檔案的結尾
讀寫入模式(r+, r+b)
對於讀寫入模式. 必須是先讀. 因為預設游標是在開頭的.準備讀取的. 當讀完了之後再進行寫入. 我們以後使用頻率最多的模式就是r+
需要先讀在寫
寫讀(w+, w+b)
先將所有的內容清空. 然後寫入. 最後讀取. 但是讀取的內容是空的, 不常用
追加讀(a+)
a+模式下, 不論先讀還是後讀. 都是讀取不到資料的.
其他動作:
seek(n):seek(n) 游標移動到n位置, 注意, 移動的單位是byte. 所以如果是UTF-8的中文部分要是3的倍數. 通常我們使用seek都是移動到開頭或者結尾. 移動到開頭: seek(0) 移動到結尾: seek(0,2) seek的第二個參數表示的是從哪個位置進行位移, 預設是0, 表示開頭, 1表示當前位置, 2表示結尾
tell():使用tell()可以協助我們擷取當前游標位置
truncate() 截斷檔案
在r+模式下. 如果讀取了內容. 不論讀取內容多少. 游標顯示的是多少. 再寫入 或者操作檔案的時候都是在結尾進行的操作. 所以如果想做截斷操作. 記住了. 要先挪動游標. 挪動到你想要截斷的位置. 然後再進行截斷 關於truncate(n), 如果給出了n. 則從開頭開頭進行截斷, 如果不給n, 則從當前位置截斷. 後面的內容將會被刪除
另一種開啟檔案的方式:
with open("娃娃", mode="r", encoding="utf-8") as f1:
這個不需要關閉檔案,使用方式和上面一樣
python全棧開發08