Python文件讀寫在“簡易記事本”項目中的應用
文件讀寫是“簡易記事本”項目實現數據持久化的關鍵部分。在本節中,我們將逐步拆解記事本的功能,詳細講解與文件讀寫相關的代碼,并結合實際操作幫助讀者更好地理解文件操作的核心知識點。
功能一:加載已有的筆記
當程序啟動時,需要從文件中加載已有的筆記內容,以便用戶可以繼續管理先前保存的筆記。
相關代碼:
# 定義保存筆記的文件路徑
FILE_PATH = "notes.txt"# 讀取文件內容并返回為列表
def load_notes():"""從文件中加載筆記內容。如果文件不存在,返回空列表。"""try:# 以只讀模式打開文件with open(FILE_PATH, "r", encoding="utf-8") as file:notes = file.readlines() # 按行讀取內容,返回列表return [note.strip() for note in notes] # 去除換行符后返回except FileNotFoundError:# 文件不存在時返回空列表print("文件不存在,未加載任何筆記。")return []
功能解析:
-
文件路徑設置:
FILE_PATH
是保存筆記的文件路徑,方便統一管理。如果文件存儲在其他位置,可以修改為絕對路徑。
-
打開文件:
- 使用
open(FILE_PATH, "r", encoding="utf-8")
以只讀模式打開文件。utf-8
編碼確保中文字符正常顯示。
- 使用
-
讀取文件內容:
- 使用
file.readlines()
方法按行讀取文件中的所有內容,返回一個列表,每行對應列表中的一個元素。
- 使用
-
去除換行符:
- 使用列表推導式
[note.strip() for note in notes]
去除每行末尾的換行符,確保數據整潔。
- 使用列表推導式
-
文件不存在的處理:
- 捕獲
FileNotFoundError
異常,提示用戶文件不存在,并返回空列表。
- 捕獲
實操演示:
- 假設文件
notes.txt
包含以下內容:買牛奶 早起鍛煉 閱讀一本書
- 調用
load_notes()
函數將返回:["買牛奶", "早起鍛煉", "閱讀一本書"]
功能二:保存新筆記到文件
用戶新增的筆記需要保存到文件中,以確保程序關閉后數據不會丟失。
相關代碼:
# 將新的筆記寫入文件
def save_note(note):"""將新筆記保存到文件。如果文件不存在,將自動創建。"""with open(FILE_PATH, "a", encoding="utf-8") as file:file.write(note + "\n") # 追加新筆記并換行print(f"筆記已保存:{note}")
功能解析:
-
追加模式寫入:
- 使用
open(FILE_PATH, "a", encoding="utf-8")
以追加模式打開文件。如果文件不存在,Python會自動創建文件。
- 使用
-
寫入新筆記:
- 使用
file.write(note + "\n")
將筆記內容寫入文件,并在末尾添加換行符,確保每條筆記占據一行。
- 使用
-
用戶反饋:
- 每次寫入后打印一條消息,提示用戶筆記已成功保存。
實操演示:
- 新增筆記
完成代碼編寫
,調用save_note("完成代碼編寫")
后,文件notes.txt
的內容更新為:買牛奶 早起鍛煉 閱讀一本書 完成代碼編寫
功能三:顯示已有筆記
用戶需要查看文件中保存的所有筆記內容,系統需要從文件加載并格式化展示。
相關代碼:
# 顯示所有筆記
def display_notes(notes):"""顯示所有已保存的筆記。"""if not notes:print("當前沒有任何筆記。")else:print("已保存的筆記如下:")for index, note in enumerate(notes, start=1):print(f"{index}. {note}")
功能解析:
-
檢查筆記列表是否為空:
- 使用
if not notes
判斷筆記列表是否為空,若為空則提示用戶沒有任何筆記。
- 使用
-
逐條顯示筆記:
- 使用
enumerate
為每條筆記添加序號,并打印出整齊的格式化內容。
- 使用
實操演示:
- 假設筆記列表為
["買牛奶", "早起鍛煉", "閱讀一本書"]
,調用display_notes
函數后輸出:已保存的筆記如下: 1. 買牛奶 2. 早起鍛煉 3. 閱讀一本書
總結
通過上述逐步拆解和詳細講解,讀者可以清晰地理解文件讀寫操作在“簡易記事本”項目中的應用。文件操作是實現數據持久化的核心,同時也是Python編程中非常重要的技能。通過實操練習,能夠幫助讀者更好地掌握這一知識點。