python學習——文件讀寫

2019-08-17     python猿

文件的作用

就是把一些存儲存放起來,可以讓程序下一次執行的時候直接使用,而不必重新製作一份,省時省力

文件的基礎操作

打開文件

Python內置了一個open()方法,用於對文件進行讀寫操作。使用open()方法操作文件就像把大象塞進冰箱一樣,可以分三步走,一是打開文件,二是操作文件,三是關閉文件。

open()方法的返回值是一個file對象,可以將它賦值給一個變量(文件句柄)。其基本語法格式為:

f = open(filename, mode)

filename 文件名稱

mode 打開模式

打開模式常用的有 r(讀模式,文件必須存在) w(寫模式),當然還有一些其他方式

文件的關閉

編碼問題

要讀取非UTF-8編碼的文件,需要給open()函數傳入encoding參數,例如,讀取GBK編碼的文件:

遇到有些編碼不規範的文件,可能會拋出UnicodeDecodeError異常,這表示在文件中可能夾雜了一些非法編碼的字符。遇到這種情況,可以提供errors參數,表示如果遇到編碼錯誤後如何處理。

文件對象操作

每當我們用open方法打開一個文件時,將返回一個文件對象。這個對象內置了很多操作方法。下面假設,已經打開了一個f文件對象。

f.read(size)

讀取一定大小的數據, 然後作為字符串或位元組對象返回。size是一個可選的數字類型的參數,用於指定讀取的數據量。當size被忽略了或者為負值,那麼該文件的所有內容都將被讀取並且返回。

f.readline()

從文件中讀取一行n內容。換行符為'\\n'。如果返回一個空字符串,說明已經已經讀取到最後一行。這種方法,通常是讀一行,處理一行,並且不能回頭,只能前進,讀過的行不能再讀了。

f.readlines()

將文件中所有的行,一行一行全部讀入一個列表內,按順序一個一個作為列表的元素,並返回這個列表。readlines方法會一次性將文件全部讀入內存,所以也存在一定的風險。但是它有個好處,每行都保存在列表里,可以隨意存取。

f.write()

將字符串或bytes類型的數據寫入文件內。write()動作可以多次重複進行,其實都是在內存中的操作,並不會立刻寫回硬碟,直到執行close()方法後,才會將所有的寫入操作反映到硬碟上

讀取大文件的處理方式

比如一個文件很大,比如5G,怎麼把文件的數據讀取到內存然後進行處理呢?

文件的定位讀寫- f.seek()

f.tell()

返迴文件讀寫指針當前所處的位置,它是從文件開頭開始算起的位元組數。一定要注意了,是位元組數,不是字符數。

f.close()

關閉文件對象。當處理完一個文件後,調用f.close()來關閉文件並釋放系統的資源。文件關閉後,如果嘗試再次調用該文件對象,則會拋出異常。

with關鍵字

with關鍵字用於Python的上下文管理器機制。為了防止諸如open這一類文件打開方法在操作過程出現異常或錯誤,或者最後忘了執行close方法,文件非正常關閉等可能導致文件泄露、破壞的問題 。Python提供了with這個上下文管理器機制,保證文件會被正常關閉。在它的管理下,不需要再寫close語句。注意縮進。

文件的相關操作

案例:

製作文件的備份

案例:

批量重命名文件名稱

文章來源: https://twgreatdaily.com/LGw5pGwBvvf6VcSZo_Ux.html