上一篇我們學會了用 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() 就像是「有小助手的書店,你看完書後不用自己動手,小助手就會幫我們整齊地放回去」

同樣都是看書,善後的待遇是完全天差地別,如果能選擇,我肯定是選擇輕鬆的讓小助手幫忙啦!

Close Menu