我的Python小課堂——文件操作

  1. 文件的基礎操作
    open():可以打開一個指定路徑下的文件,返回一個文件對象。
    open最常用的有兩個參數,第一個參數是文件名(絕對路徑或者相對路徑),第二個是打開方式,‘r’ ,’w’, ‘a’, ‘b’,表示讀(默認),寫,追加寫,二進制。

  2. 關於內建函數
    內建函數其實是包含在builtins這個模塊中的一些函數。而builtins這個模塊Pyhton解釋器會自動包含。
    使用 dir(builtins)可以看到Python中一共有哪些內建函數。

  3. 關於文件對象
    我們學習C語言知道FILE*,通過FILE*進行文件讀寫操作。
    我們學習Linux時又知道,FILE*結構中其實包含了文件描述符,操作系統是通過文件描述符來對文件操作的。
    Python的文件對象,其實也包含了文件描述符,同時也包含了這個文件的一些其它屬性,本質上也是通過文件描述符完成對文件的讀寫操作。
    既然文件對象包含了文件描述符,我們知道,一個進程可操作的文件描述符的數目是有上限的,因此對於用完了的文件描述符要及時關閉。
    當文件對象被垃圾回收器銷燬時,也會同時釋放文件描述符。
    如果 文件打開失敗,(例如文件不存在),就會執行出錯。

  4. 讀文件
    read:讀指定長度字節數的數據,返回一個字符串。(不是很常用)
    readlines:讀取一行數據,返回一個字符串。
    readlines:讀取文件,返回一個列表,列表中的每一項是一個字符串,代表了一行內容。
    直接使用for line in f的方式循環遍歷每一行。功能和readline類似,一次只讀一行,相比於readlines佔用內存少。

  5. 寫文件
    write:向文件中寫一段字符串。
    如需寫文件,必須要按照’w’或者’a’的方式打開文件,否則會寫失敗。
    writelines:參數是一個列表,列表中的每一個元素是一個字符串。
    並沒有一個writeline這樣的函數,因爲這個動作等價於write時在字符串後面加上’\n’,同理,使用writelines的時候,也需要保證每一個元素的末尾,都帶有’\n’

  6. 讀寫緩衝區
    Python的文件讀寫操作,即可以支持帶緩衝區,也可以選擇不帶緩衝區
    在使用open函數打開一個文件的時候,其實還有第三個參數,可以指定是否使用緩衝區,以及緩衝區的大小是多少。
    使用flush方法可以立即刷新緩衝區。

  7. 操作文件指針
    文件具備隨機訪問的能力,這個過程是通過操作文件指針完成的。
    seek:將文件指針移動到從文件開頭算起的第幾個字節上,有兩個參數,第一個參數offset表示偏移的字節數,第二個參數whence表示偏移量的其實位置在哪,值爲0,表示從開頭計算,值爲1,表示從當前位置,值爲2,表示從文件結尾位置
    tell:獲取當前文件指針指向的位置,返回當前位置到文件開頭的偏移量。

  8. with語句和上下文管理器
    在with語句塊內進行文件操作,當文件操作完畢之後,出了with語句之外,就會自動執行f的關閉操作。
    一個支持上下文協議的對象才能被應用於with語句中,我們將這種對象稱爲上下文管理器,Python中很多內置對象都是上下文管理器,例如文件對象,線程鎖對象等。
發佈了105 篇原創文章 · 獲贊 37 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章