📌 第 7 小時:檔案處理與錯誤處理(File Handling & Exception Handling)
在 Python 中,檔案處理(File Handling) 允許我們 讀取、寫入、刪除 檔案,使程式能夠與外部數據互動。同時,錯誤處理(Exception Handling) 讓我們能夠避免程式因錯誤而崩潰,並提供適當的錯誤訊息。
🔹 1. 檔案處理(File Handling)
Python 提供 open()
來開啟檔案,並允許 讀取(Read)、寫入(Write)、追加(Append)。
🟢 open()
的基本語法
file = open("檔案名稱", "模式")
📌 常見模式
模式 | 說明 |
---|---|
"r" |
讀取模式(預設,檔案不存在時會報錯) |
"w" |
寫入模式(清空原內容,檔案不存在則創建) |
"a" |
追加模式(不清空原內容,直接在尾部寫入) |
"x" |
建立新檔案(檔案已存在時報錯) |
🔹 2. 讀取檔案
Python 提供多種方法來讀取檔案:
read()
→ 讀取整個檔案readline()
→ 讀取一行readlines()
→ 讀取所有行(以列表回傳)
🟢 讀取整個檔案
with open("example.txt", "r") as file:
content = file.read()
print(content)
📌 with open()
會自動關閉檔案,避免手動 file.close()
。
🟢 逐行讀取
with open("example.txt", "r") as file:
for line in file:
print(line.strip()) # `strip()` 去除換行符
🟢 讀取前 N 個字元
with open("example.txt", "r") as file:
content = file.read(10) # 讀取前 10 個字元
print(content)
🔹 3. 寫入檔案
我們可以使用 "w"
或 "a"
來寫入檔案:
"w"
模式會 清空 檔案內容並寫入新內容"a"
模式則 在檔案末端追加新內容
🟢 覆寫檔案("w"
模式)
with open("example.txt", "w") as file:
file.write("這是一個新檔案!\n")
file.write("第二行內容。\n")
📌 若檔案已存在,"w"
模式會清除舊內容!
🟢 追加內容("a"
模式)
with open("example.txt", "a") as file:
file.write("這是追加的內容。\n")
📌 "a"
模式適用於 日誌(Log)或持續更新的資料。
🔹 4. 刪除檔案
Python 提供 os.remove()
來刪除檔案,但使用前應先檢查檔案是否存在:
import os
if os.path.exists("example.txt"):
os.remove("example.txt")
print("檔案已刪除")
else:
print("檔案不存在")
🔹 5. 錯誤處理(Exception Handling)
在開發過程中,我們可能會遇到 零除錯誤(ZeroDivisionError)、文件不存在錯誤(FileNotFoundError) 等問題。
Python 提供 try-except
機制來捕捉錯誤,避免程式崩潰。
🟢 基本 try-except
try:
num = int(input("輸入一個數字: "))
result = 10 / num
print(result)
except ZeroDivisionError:
print("錯誤:不能除以 0!")
except ValueError:
print("錯誤:請輸入數字!")
📌 程式遇到 ZeroDivisionError
或 ValueError
不會崩潰,而是執行 except
區塊的程式。
🔹 6. 捕捉多種類錯誤
我們可以一次捕捉多種類錯誤:
try:
file = open("不存在的檔案.txt", "r")
data = file.read()
except (FileNotFoundError, IOError):
print("錯誤:檔案不存在或無法讀取!")
📌 except (錯誤1, 錯誤2)
允許一次捕捉多個錯誤。
🔹 7. 使用 finally
finally
內的程式碼無論有無發生錯誤都會執行,通常用來關閉資源:
try:
file = open("example.txt", "r")
print(file.read())
except FileNotFoundError:
print("檔案未找到")
finally:
print("程式執行結束")
🔹 8. 自訂錯誤(Raise)
我們可以使用 raise
主動拋出錯誤:
def check_age(age):
if age < 0:
raise ValueError("年齡不能為負數!")
print(f"你的年齡是 {age} 歲")
try:
check_age(-5)
except ValueError as e:
print(f"錯誤:{e}")
📌 raise
會終止函式執行並拋出錯誤。
📌 第 7 小時小結
✅ Python 提供 open()
來讀取 ("r"
)、寫入 ("w"
)、追加 ("a"
) 檔案
✅ with open()
可確保檔案自動關閉,避免手動 file.close()
✅ os.remove()
可用來刪除檔案,但需先檢查檔案是否存在
✅ try-except
可用來捕捉錯誤,避免程式崩潰
✅ finally
確保程式執行結束後釋放資源
✅ raise
可用來主動拋出錯誤
至此,你已掌握 Python 檔案處理與錯誤處理,下一步將學習 網路爬蟲,讓你的 Python 程式可以從網頁抓取資料!🚀
沒有留言:
張貼留言