本篇介紹檔案的基本操作,首先是讀取檔案的示範。執行此範例之前,請先創造一個 OAO.txt,並任意的輸入幾行內容。

fin = open('OAO.txt', 'r')

for s in fin.readlines():
	print(s)

fin.close()

檔案在使用前,必須開啟。開啟檔案的函式為「open」,第一個參數是一個字串,代表檔案名稱;第二個參數是開啟的模式,這裡的「'r'」代表這個檔案會被用來讀取。「fin.readlines()」會把檔案的全部內容切成一行一行的(所以你會得到一個串列,其中的每個元素是一個字串),並且會保留原本的換行字元;如果你希望把原本的換行字元刪掉,可以使用字串的 strip。檔案操作完畢後,必須用「close」關閉。讀取完成後,可以用各種字串操作的方法去處理。

你也可以使用 read 一次讀取全部內容後,再用 splitlines 切出一行一行的內容:

fin = open('OAO.txt', 'r')

for s in fin.read().splitlines():
	print(s)
   
fin.close()

如果要寫入檔案,則可以在開啟時使用「'w'」。使用 w 模式時,如果檔案不存在,則會建立一個新的;但如果檔案存在,則舊的內容會被清掉重寫:

fout = open('QQ.txt', 'w')
fout.write('123\n456')
fout.close()

「w」模式會把檔案覆蓋並重寫,而「a」模式則可以把新的內容,附加到原本檔案的尾端 。如果檔案不存在的話,「a」模式也會幫你建立一個新的。以下是範例,為了看出附加的效果,各位可以試著多執行幾次:

fout = open('QQ.txt', 'a')
fout.write('GG\nOAO')
fout.close()

除了自己把檔案關閉以外,還可以利用 Pytohn 的 with...as 功能,接在 with 後面開啟的檔案,會自動關閉:

with open('QQ.txt', 'w') as fout:
	fout.write('123\n456')

在前面的範例中,我們都假設檔案存在,並且可以順利地被讀取或寫入。在其他某些語言中,如果檔案不存在的話,會在讀取時才產生問題,而 Python 會在開啟時就產生錯誤。若要在程式中偵測相關情況,其中一種方法是使用「try...except」處理,或者使用 os 函式庫的 isfile 或 exists 判斷檔案是否存在,兩者的差別是前者會把資料夾視為否定(因為資料夾不是檔案),但後者可以不管是檔案或資料夾都可以判斷,如下:

import os

print(os.path.isfile('no_such_file.py'))
print(os.path.exists('no_such_file.py'))