前面我們瞭解了Python的異常處理和自定義異常,今天我們瞭解下Python的文件操作;
首先Python對文件的處理並不是直接操作的,而是去調用操作系統接口方法間接操作文件的,這樣做的目的是為了確保操作系統安全性。
1.文件讀寫操作:open函數
格式:
open(file, mode='r',
encoding=None, buffering=-1,
errors=None, newline=None,
closefd=True, opener=None)
比較常用的是前四個:
file: 必需,文件相對或者絕對路徑
mode: 可選,文件打開模式
encoding: 一般使用utf8
buffering: 設置讀取文件的緩衝區,是一段內存區域。
文件寫操作: 'w'(w:write)
使用'w'寫模式時,如果文件不存在,open()會創建一個新文件。
如果修改上面寫入的數據再次執行代碼,會發現文件內容是最新的數據,並不會保留之前已經寫入的數據。
如果出現亂碼了,你需要設置encoding='utf-8'參數。
注意:打開文件並寫入數據的時候,並不是立馬就寫入到磁盤文件中,而先寫入內存緩衝區中,然後再寫入文件。
write():將字符串寫入文件,返回的是寫入的字符長度。
writelines(sqe):將一個序列字符串列表寫入文件中,實例代碼:
文件讀操作:'r'(r:read)
如果文件不存在,用'r'讀模式是會報錯的:
文件存在時,運行結果:
read() 讀取所有數據
read(size) 每次讀多少個字節數據
readline() 每次讀取一行
readlines() 讀取所有行並返回列表
readlines(size) 每次讀取多行數據
2. 操作模式
上面我們已經瞭解了文件的'r'和'w'兩種操作模式,我們再詳細說下其它操作模式。
追加模式: 'a'(a:append),這種模式數據會被追加到末尾,不會覆蓋上次寫的數據。
文件加號+ 模式:一般與其它操作模式組合使用表示更新操作
r+ 可讀也可寫,不存在會報錯
w+ 可讀也可寫,不存在會創建文件
a+ 可讀也可寫,不存在會創建文件
w+ 和 a+區別:開始寫數據的位置不同。
注意:w+ 模式每次執行都會建一個新文件,如果打開已存在的文件,原有文件內容會被刪除的。
二進制模式:'b'(b:binary)
open()文件操作默認為文本模式,如果操作二進制文件(如:圖片)加上 b 就可以了;
如:rb+ wb+ ab+
注意了,文件操作完後一定要記得調用close()函數關閉文件流。
3. 異常處理
4. 文件句柄
文件句柄,這個詞聽起來很抽象,讓人有種距離感,其實就是上面open()函數返回的文件對象 f,Python中一切皆對象),這樣理解就簡單多了。
實例代碼:
5. 上下文管理器 with
格式:
with open() as 別名 :
這樣會讓代碼簡單清晰,最關鍵省去了文件操作完畢後close()函數的顯示調用,實例代碼:
6.文件指針移動
上面的實例中,第一次read()時,tell為22,說明在追加模式下指針這會在文件結尾處,所以讀取不到數據。
seek(offset[, whence])
移動文件讀取指針到指定位置。
offset:開始的偏移量,如果是負數表示從倒數第幾位開始。
whence:表示要從哪個位置開始偏移,
0 代表從文件開頭開始算起,默認值
1 代表從當前位置開始算起,
2 代表從文件末尾算起;
python文件操作就瞭解到這裡,大家有什麼問題請在評論區裡留言,下次我們開始正式學習面向對象編程,歡迎大家多多關注!
上一篇:
【極客乾貨】從事IT行業十餘年,在移動互聯網開發,J2EE企業級開發,IOT物聯網,AI人工智能等方面有點技術積累,熟練使用C/C++,Java,Python等編程語言。從2009年開始接觸Python,後續借空閒時間將個人熟悉的技術乾貨系統性分享給大家,也許我的分享會讓你少走一些彎路,如果您覺得還可以,請多多關注,評論和轉發,非常感謝!
閱讀更多 極客乾貨 的文章