隨手養成 Python 好習慣 ─ 開檔、讀檔
Posted on Sep 5, 2016 in Python 程式設計 - 初階 by Amo Chen ‐ 2 min read
很多時候為撰寫速度與方便的結果,我們經常會把檔案開啟之後,就忘記關閉它。小小程式也許並不會讓人在意,但是當我們正在開發大型應用程式時,這樣的壞習慣經常會帶來無法預期的結果。
例如以下的 Python 片段就是一個不好的例子,因為它並沒有進行關檔的善後處理:
for line in open("file.txt"):
print line
因此在Python手冊中也提倡了clean-up的動作,簡單地講,就是必須考慮到某些程式行為如何善後。以開檔為例,善後的動作當然就是關檔。
各位其實能夠善用,try-except-else-finally
的陳述結構來進行善後的動作,除了能養成開發的好習慣之外,也能夠讓所開發出來的程式更加堅固耐用(robust)。
try-except-else-finally 的結構如下:
try:
# 程式主體
except # 預期可以處理的例外錯誤類型:
# 例外處理
else:
# 沒有發生例外或錯誤時的執行區塊
finally:
# Clean-up Action,例如關檔
上述的結構中,finally 區塊是不管有沒有錯誤或例外產生都會被執行的區塊,因此很適合被使用來進行善後的動作。
最後 Python 手冊中也提到了可以善用 with
來進行開檔、讀檔,以避免忘記進行關檔的動作。
例如:
with open("file.txt") as f:
for line in f:
print line
如此一來,上述的 f
變數在離開, with
區塊後,都能夠被自動地結束,以達成 clean-up 的目的。
讓我們一起隨手養成寫 Python 的好習慣,成為一個人人都喜愛的 Python 程式開發者吧!
參考資料:
http://docs.python.org/2/tutorial/errors.html#predefined-clean-up-actions