今天我們將學習 Python 中的文件處理,這是日常開發中非常常見的需求之一。無論是讀取文件內容或是將數據寫入文件,掌握文件操作將使你能夠處理更多的資料來源。
open()
open()
函數來打開文件。基本語法:
file = open('filename', 'mode')
mode
定義了你打開文件的方式:
'r'
: 讀取模式(read)'w'
: 寫入模式(write),如果文件不存在會創建文件,存在則覆蓋。'a'
: 追加模式(append),在文件末尾添加內容。'b'
: 二進制模式(binary),用於處理非文字文件(如圖片)。read()
read()
、readline()
或 readlines()
。read()
會讀取整個文件:
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
close()
關閉文件,釋放資源。write()
write()
:
file = open('output.txt', 'w')
file.write("Hello, Python!")
file.close()
append()
'a'
模式可以在不覆蓋文件內容的前提下,將新數據追加到文件末尾:
file = open('output.txt', 'a')
file.write("\nAppending new content.")
file.close()
with
語法進行文件操作with
語句可以自動關閉文件,即使發生錯誤也不會影響資源釋放。
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 文件會自動關閉
read()
可能會耗盡記憶體。這時可以使用 readline()
一次讀取一行,或是使用迴圈逐行讀取:
with open('large_file.txt', 'r') as file:
for line in file:
print(line.strip()) # .strip() 可以去除換行符
讀取模式 ('r'
)
FileNotFoundError
。寫入模式 ('w'
)
追加模式 ('a'
)
二進制模式 ('b'
)
'rb'
、'wb'
。假設有一個名為 students.txt
的文件,裡面記錄了學生名單,我們可以讀取並輸出它的內容:
with open('students.txt', 'r') as file:
content = file.read()
print("學生名單:")
print(content)
我們可以將一個程式的運行結果保存到文件中,方便後續查看:
result = "計算結果: 50"
with open('result.txt', 'w') as file:
file.write(result)
print("結果已保存到 result.txt 文件中。")
CSV(逗號分隔值)是一種常見的資料儲存格式,我們可以使用 Python 內建的 csv
模組來讀取這類文件:
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
FileNotFoundError
try-except
來處理:
try:
with open('non_existent_file.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("文件不存在。")
權限錯誤
PermissionError
,這通常發生在嘗試訪問系統或受保護的文件時。這個練習要求編寫一個程式來讀取使用者輸入的檔案名,並顯示其內容。若檔案不存在,則顯示錯誤訊息。
def read_file():
filename = input("請輸入檔案名稱: ")
try:
with open(filename, 'r', encoding='utf-8') as file:
content = file.read()
print("檔案內容如下:")
print(content)
except FileNotFoundError:
print(f"錯誤:檔案 {filename} 不存在。")
except Exception as e:
print(f"發生錯誤:{e}")
# 測試程式
read_file()
open()
:嘗試以讀取模式開啟指定檔案。FileNotFoundError
:捕捉當檔案不存在時引發的錯誤,顯示提示訊息。Exception
:捕捉其他潛在錯誤,提供通用的錯誤處理。建立一個簡單的日誌系統,每次程式運行時,將當前的時間戳記和執行結果追加到一個日誌檔案中。
import datetime
def log_result(result):
timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
log_entry = f"{timestamp} - 執行結果: {result}\n"
with open("log.txt", "a", encoding='utf-8') as log_file:
log_file.write(log_entry)
print("日誌已更新。")
# 測試程式
result = "程式運行成功"
log_result(result)
datetime.datetime.now()
:獲取當前的日期和時間,並格式化為字串。"a"
模式:使用追加模式 (a
) 打開檔案,這樣每次運行時會將新內容追加到檔案末尾,而不覆蓋現有內容。log_result
函數:將執行結果和時間戳寫入日誌檔案。這些範例展示了如何進行文件的讀取與寫入,以及如何有效地處理錯誤並在每次程式運行時更新日誌檔案。
今天我們學習了如何進行基本的文件操作,包括讀取、寫入和追加文件,並且了解到如何使用 with
語句更安全地管理文件資源。掌握這些技巧,將使你能夠處理真實世界中的數據文件,更加靈活地完成各種應用場景。
第十五天:Python 進階:物件導向程式設計 (OOP) 的基礎