讀檔(三):with open() 自動幫你關檔!
上一篇我們學會了用 open() 來讀取檔案,
可是每次打開後都要記得 close(),是不是有點麻煩?
而且!如果我們跑 Code 跑到一半,發生錯誤或者是強制關閉,
close() 的關閉檔案可能根本沒有執行,結果檔案就會一直保持開啟狀態,
可能會導致「檔案被鎖住」、「資料沒存好」或「記憶體被占用」等等的問題。
所以為了解決這個狀況,今天來討論 Python 中另一個更聰明的方法吧!
那就是 with open()
為什麼要用 with open()?
with open() 是 Python 中專門用來「自動管理檔案資源」的絕招,
只要我們用 with open() 打開檔案,程式會在使用完後自動幫我們把檔案關閉,
所以即使中途發生錯誤,他也會自動乖乖關上檔案,非常安全!
with open(‘檔案名稱’, ‘模式’) as f:
# 在這裡操作檔案
content = f.read()
print(content)
- as f:會幫我們把開啟的檔案作成物件,裝進一個變數 f 內
- 縮排內的程式碼會在檔案開啟狀態下執行
- 當縮排結束後,Python 會自動呼叫 close()
拿出我們前一篇的 SC001.txt 檔案,內容如下:
This is stanCode’s frist Python class!
You can learn how to write your first program here.
來試試看用 with open() 打開使用吧!
with open(‘SC001.txt’, ‘r’) as f:
content = f.read()
print(content)
不需要 .close(),就一樣可以顯示出相同的結果啦!
This is stanCode’s frist Python class!
You can learn how to write your first program here.
另外也可以換個方法將資料 print 出來,不一定要一次把所有東西 print 出來,我們也可以一行一行 print 出來唷!
with open(‘SC001.txt’, ‘r’) as f:
for line in f:
print(line.strip())
這樣逐行的使用檔案,可以讓我們處理資料的時候更方便喔✅
兩種方法的差異
上次的 open() 就像是「在自己家裡,想看書的時候,自己打開書、看完要記得關起來,再收回去」
with open() 就像是「有小助手的書店,你看完書後不用自己動手,小助手就會幫我們整齊地放回去」
同樣都是看書,善後的待遇是完全天差地別,如果能選擇,我肯定是選擇輕鬆的讓小助手幫忙啦!
stanCode標準程式教育機構-你也值得更好的教育
Facebook|https://www.facebook.com/stancode.tw
Instagram|https://www.instagram.com/stancode_tw/
YouTube|https://www.youtube.com/@stancode7228/videos
Website|https://www.stancode.tw/
TikTok|https://www.tiktok.com/@standardcoding
