Python for Beginners (18)|檔案處理 (File Handling)

Python 檔案處理(File Handling)入門教學

by KC
0 comment

本單元測驗:

檔案處理(File Handling)是寫程式不可或缺的一部分。Python 中的檔案處理會透過內建函式或方法將其簡化,而這些方法包括建立開檔關檔。當檔案打開時,Python 還允許執行各種檔案操作,例如讀檔寫檔附加資訊。本文章將教初學者如何在 Python 處理檔案。大家可以先參考下圖,先對檔案處理有一個架構想法,我們將在後面依序為大家介紹。

檔案處理(File Handling)
檔案處理(File Handling)

1. 開檔

在 Python 中,我們必須先打開檔案才能使用它們,並在使用完後關閉它們。首先,我們可以使用 open() 函式來開啟檔案,基本語法如下:

File_object = open('File_Name', 'mode')

open() 函式採用兩個基本參數來處理檔案:

  • File_Name 需包含檔案副檔名,並且假定檔案位於目前目錄中。如果檔案位置在別處,則必須提供相對路徑或絕對路徑。
  • mode 是一個可選擇參數,定義檔案開啟方式。下表為開啟檔案的不同模式選項:
開啟檔案不同模式參數
開啟檔案不同模式參數

為了展示如何在 Python 中打開檔案,我們可以先建立一個 demo.txt ,並且內容如下的檔案。

現在,我們可以嘗試使用 open() 函式來開啟指定檔案,如下面範例 1。

範例 1:開啟檔案

在目前目錄下開啟檔案。預設情況下,檔案會以讀取模式 ‘r’ 開啟(無法修改),因此範例 1的代碼相當於範例 2。

範例 2:在目前目錄下開啟檔案

範例 2 說明我們會透過傳遞參數的方式來指定使用模式 ‘r’,並且意味著要開啟檔案進行讀取。

2. 讀檔

打開檔案後,我們可以使用 read() 方法來讀取其內容。例如,

範例 3:讀檔

file_1.read() 會讀取 demo.txt 內的資料,並且儲存至 read_content 變數中。

範例 4:讀出檔案指定數量字元

範例 4 為讀出檔案中的前 7 個字元,包含空格。

範例 5:讀出檔案每一行

利用 for loop 來讀出檔案中每一行並列印出來。

3. 關檔

當我們對檔案完成相關操作後,我們需要正確關檔。因為關檔動作可以釋放與該檔案綁定的相關資源,是編寫程式的好習慣。它是利用 Python 中的 close() 方法來完成的。

範例 6:關閉檔案

close() 命令會終止並釋放特定程序正在使用的資源。 

4. 寫檔

了解 Python 如何開檔、讀檔及關檔後,現在讓我們看看如何建立檔案,以及寫入模式如何工作。請在 ‘w’ 模式下利用 write() 方法,在您的 Python 環境中編寫以下內容。

範例 7:建立檔案

你將會在目前目錄中看到新建立的檔案 simple.txt,其內容如下圖:

建立檔案執行結果
建立檔案執行結果

讀者可能會疑問怎麼沒有換行,那是因為我們沒有寫入換行符號 \n ,讓我們看看下面範例。

範例 8:建立檔案,並且換行

加入換行符號 \n 後,我們再開啟 simple.txt 檔案,你將會看到內容已經換行了。

建立檔案執行結果(換行)
建立檔案執行結果(換行)

範例 9:利用附加模式寫檔

我們可以利用 ‘a’ 附加模式,將要寫入的內容附加在檔案最後面,因為本範例希望先換行再附加內容,所以在前面先加入換行符號 \n 。

利用附加模式寫檔
利用附加模式寫檔

附加後的內容如下圖:

附加模式寫檔執行結果
附加模式寫檔執行結果

5. 使用 with…open 語法

在 Python 中,我們可以使用 with...open 的語法來自動關閉檔案,這樣我們就不必擔心忘記關檔,因此建議初學者可以養成使用 with...open 語法的習慣。例如

範例 10:使用 with…open 語法

其它還有許多複合使用的進階功能,有興趣的讀者可以至 Python 官網查閱。

本文中,我們討論了 Python 的檔案處理(File Handling),包括了開檔關檔讀檔寫檔等重要操作。並且介紹一些常用的模式(像是附加模式的 ‘a’)以及 with...open 的語法。希望本篇文章能幫助您快速理解 Python 中重要的檔案處理觀念及操作。並透過一些範例來進行動手練習,後續會持續分享 Python 相關學習文章給有興趣的初學者。

4. Python 練習

學習環境:Google Colab (學習請按我)

練習範例:有 (本文提供)

Quiz:有 (近期推出)

如果你喜歡這篇文章歡迎訂閱、分享(請載名出處)追蹤,並持續關注最新文章。同時 FB 及 IG 也會不定期提供國內外教育與科技新知。

Related Posts

Leave a Comment

error: Content is protected !!