2025年3月6日 星期四

Python 18 小時入門-- 第 7 小時:檔案處理與錯誤處理(File Handling & Exception Handling)

 📌 第 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("錯誤:請輸入數字!")

📌 程式遇到 ZeroDivisionErrorValueError 不會崩潰,而是執行 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 程式可以從網頁抓取資料!🚀

沒有留言:

張貼留言