前言

當一個資料檔的資料要進行處理時,必須先用開檔函式將檔案打開,才能進行資料檔內容的讀取、處理、修改、存放,最後再用關檔函式將檔案關閉。

開檔函式

Python的内建函式 open()可用來開啟指定的資料檔,語法如下:

物件變數 = open(檔案路徑名稱[,模式])
  1. 物件變數:若開檔成功,此時一個檔案是一組字元資料串流,而這個串流是存放在主記憶體準備進一步的運用操作。所以這個串流已經是一個「物件」了,
    故用物件變數代表該開啟的檔案資料串流。

  2. 檔案路徑名稱:是必須使用的參數,不能省略。它的內容是用來存取的資料檔
    案名稱,包含檔案所在的路徑名稱,屬字串型別。如果內容只有檔案名稱而沒
    有路徑名稱,則系統會以目前系統程式執行檔所在的資料夾做為檔案的資料夾
    所在。至於路徑名稱所在的資料夾必須事先存在,若不存在會出現錯誤,系統
    不會主動建立。

  3. 模式參數:用來設定資料檔的開啟模式,省略時預設為讀取模式,屬字串型別。
    如下:

    模式說明
    r讀取模式(預設值)。若資料檔不存在,會出現錯誤。(不可寫入)
    w寫入模式。若資料檔不存在,會建立該名稱的資料檔;若資料檔已存在,則原資料檔的內容會先被刪除,再寫入新的資料。(不可讀取)
    a新增模式。若資料檔不存在,會建立該名稱的資料檔;若資料檔已存在,則新寫入的資料會新增至原資料檔內容的尾端。(不可讀取)
    r+讀寫模式。讀取時,使用方式同 r 模式。寫入時,則寫入的資料會覆蓋原檔案相同位置的內容,若檔案不存在,會出現錯誤。(可讀寫)
    w+讀寫模式。寫入時,使用方式同 w 模式。讀取時,需先用 seek() 函式指定讀取指標位址,才能讀取所需資料。seek(0) 為檔案開頭。(可讀寫)
    a+新增讀寫模式。寫入新增時,使用方式同 a 模式。讀取時,需先用 seek() 函式指定讀取指標位址,才能讀取所需資料。seek(0) 為檔案開頭。(可讀寫)

[簡例] 開啟一個可寫入資料的檔案,其檔案名稱為'c:/data/file01.txt'。 (檔名:open01.py)

關檔函式

已開啟的資料檔若不再使用,則要用close()函式關閉。資料檔內容若有經過
寫入、修改,有部分的資料串流是暫時放在電腦的主記憶體緩衝區內,如果沒有用
close()函式來關檔而是直接結束程式執行,會造成暫放在緩衝區中的資料串流沒有回存資料檔內而遺漏。語法如下:

物件變數.close()

物件變數名稱代表已開啟的檔案資料串流。

[簡例] 開啟一個可寫入資料的檔案後,再立即關閉該資料檔。 (檔名:close01.py)

說明

  1. 在已存在的資料夾'c:/data'内,建立檔案 file02.txt
  2. fName代表'file02.txt'檔案串流物件,故fName.close()代表關閉檔案串流物件。

with … as …

使用open()函式開啟的檔案,經處理後,必須使用close()函式來將檔案關閉。若使用with ··· as ···語法來開啟檔案,則檔案處理完後,不需要使用close()函式便會自動關閉檔案。語法如下:

with open(檔案路徑名稱[, 模式]) as 物件變數:

使用with... as ... 敘述所開啟的檔案,其讀寫處理的敘述區段必須縮排。
請參閱read02.py範例檔。


相關主題與延伸閱讀