一、文件的基本操作
1. 打開文件:open()
file = open('example.txt', 'r') # 以只讀模式打開
常用模式:
'r':只讀(默認),文件必須存在'w':寫入,會清空原文件,若不存在則創建'a':追加,在文件末尾添加內容'r+':讀寫(不創建,不截斷)'b':二進制模式(如'rb','wb')
2. 讀取文件內容
# 方法1:讀取全部內容
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
# 方法2:按行讀取
with open('example.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip()) # strip() 去掉換行符
✅ 強烈建議使用
with open(...) as f:語法!它會在代碼塊結束時自動關閉文件,即使發生錯誤也不會泄露資源。
3. 寫入文件
# 覆蓋寫入
with open('output.txt', 'w', encoding='utf-8') as f:
f.write("Hello, Python!\n")
f.write("This is a new line.")
# 追加寫入
with open('log.txt', 'a', encoding='utf-8') as f:
f.write("2026-01-07: User logged in.\n")
4. 處理二進制文件(如圖片、音頻)
# 複製一張圖片
with open('photo.jpg', 'rb') as src:
with open('photo_copy.jpg', 'wb') as dst:
dst.write(src.read())
二、異常處理:讓程序更健壯
當程序遇到錯誤(如文件不存在、除零、類型錯誤),Python 會拋出 異常(Exception)。如果不處理,程序會崩潰。
1. 基本結構:try...except
try:
with open('not_exist.txt', 'r') as f:
print(f.read())
except FileNotFoundError:
print("❌ 文件未找到,請檢查路徑!")
2. 捕獲多種異常
try:
num = int(input("請輸入一個數字: "))
result = 10 / num
print("結果:", result)
except ValueError:
print("輸入的不是有效數字!")
except ZeroDivisionError:
print("不能除以零!")
3. 捕獲所有異常(謹慎使用)
try:
# 可能出錯的代碼
risky_operation()
except Exception as e:
print("發生未知錯誤:", e)
⚠️ 不推薦直接
except:(不指定類型),會隱藏編程錯誤!
4. else 和 finally
else:沒有異常時執行finally:無論是否異常,都會執行(常用於清理)
try:
f = open('data.txt', 'r')
data = f.read()
except FileNotFoundError:
print("文件不存在")
else:
print("讀取成功:", data[:50])
finally:
if 'f' in locals():
f.close() # 實際上用 with 更安全,這裏僅作演示
三、主動拋出異常:raise
你也可以在自己的代碼中主動觸發異常:
def divide(a, b):
if b == 0:
raise ValueError("除數不能為零!")
return a / b
try:
print(divide(10, 0))
except ValueError as e:
print("自定義錯誤:", e)
四、常見異常類型速查
|
異常類型
|
説明
|
|
|
文件未找到
|
|
|
值類型正確但值不合適(如 |
|
|
類型錯誤(如 |
|
|
除零錯誤
|
|
|
字典鍵不存在
|
|
|
列表索引越界
|