今日對話:如何讓程式擁有記憶力?
我的 Prompt(提示詞):
「我希望程式關閉後,資料還是能保留下來。請教我如何用 Python 把文字存到一個 txt 檔裡面,然後再把它讀取出來?另外,網路上很多人強調讀寫檔案一定要用 with 語法,那是什麼意思?」
AI 導師說,操作檔案就像是在「寫實體筆記本」,基本上分為三個步驟:打開筆記本 ➔ 寫字/看字 ➔ 合上筆記本。
在 Python 裡,打開檔案的模式(Mode)有三種最常用的縮寫:
那為什麼大家都推薦用 with 語法?
AI 導師給了一個生動的比喻:「傳統作法就像手動門,你打開檔案 (open) 處理完後,必須手動呼叫 close() 關門。如果程式跑到一半當機,或是你忘記寫 close(),檔案就會一直被霸佔著(記憶體外洩)。而 with就像是『自動門』,當程式離開 with的縮排區塊時,它就會自動幫你把檔案關閉,安全又省事!」
我在 VS Code 建立了 day19.py,決定結合昨天學到的 datetime 模組,寫一個簡單的「訪客簽到簿」,每次執行都會把時間和訪客名字記錄下來!
python
from datetime import datetime
#取得現在的時間字串
now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
visitor_name = input("請輸入您的名字來簽到:")
print("-" * 30)
print("1. 正在寫入檔案...")
#使用 'a' (Append) 模式打開檔案,如果沒有這個檔案會自動建立
#\n 是「換行符號」,這樣每次簽到才會獨立一行
with open('guestbook.txt', mode='a', encoding='utf-8') as file:
file.write(f"[{now_str}] 訪客 {visitor_name} 已經簽到!\n")
print("✅ 簽到成功!資料已儲存到 guestbook.txt")
print("-" * 30)
print("2. 正在讀取歷史簽到紀錄:\n")
#使用 'r' (Read) 模式讀取剛才的檔案
with open('guestbook.txt', mode='r', encoding='utf-8') as file:
content = file.read() # 一次把檔案內容全部讀出來
print(content)
print("-" * 30)
print("自動門已關閉,檔案處理結束。")
今天我們學會了用 with open() 來讀寫檔案。