檔案 I/O 全名為 File input and output,意即對檔案進行操作的手法,之前我們學過使用 input()
來讀取使用者的鍵盤輸入,但這樣有個缺點,就是每次執行程式都必須重新輸入一次資料,若資料是我們想要處理的大量資料,以檔案儲存的話我們該怎麼做呢? 又或是要輸出 log 檔之類的紀錄檔,希望輸出可以被保存而不要因終端機關閉而消失,那我們就可以運用檔案 I/O 操作。
以讀取模式開啟檔案
open(FileName, mode='r')
完整的語法格式如下
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
檔案模式 | 用途 |
---|---|
r | 讀取 |
r+ | 讀取+寫入 |
w | 寫入(覆寫) |
w+ | 寫入+讀取 |
a | 寫入(添加) |
x | 寫入(新創文件) |
t | 默認模式 |
b | 以二進制模式開啟 |
如果檔案以特定編碼儲存,我們也可以指定開啟檔案的編碼方式,以常用的 UTF-8 為例
open(fileName, mode="r", encoding="utf-8")
將資料寫入檔案
file.write(data)
將資料從檔案讀取
file.read()
file.readline() #一次讀取一行,回傳 list
取得文件位置
file.name
關閉檔案,其實這個好像不是必須,Python 會自己做處理,但是還是自己寫上去比較好。
file.close()
檔案操作範例 code
#創建新檔案
file = open("test.data", "w", encoding="utf-8")
#寫入資料 data=00123 到檔案
file.write("data=00123")
#讀取檔案名
print("File name =",file.name)
#關閉檔案
file.close()
#重新以讀取模式開啟檔案
file = open("test.data", "r", encoding="utf-8")
#讀取檔案內資料
data = file.read()
print("Data =\"",data,"\"")
#關閉檔案
file.close()
print("File is closed.")
我們也可以利用 with as 來開啟檔案,這樣可以確保最後檔案一定會關閉,只會在 with 區塊內作用
with open("test.data", "r", encoding="utf-8") as file:
data = file.read()
print("Data =", data)
大家現在可以回頭看之前處理上萬筆資料文章中做雨量判斷的程式碼,裡面就有透過 file 方法開啟政府資料集,現在應該可以更加理解了!去試試看吧~
參考資料
http://www.runoob.com/python/file-methods.html
https://openhome.cc/Gossip/Python/WithAs.html