iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
佛心分享-IT 人自學之術

當 Python 初學者遇到 AI:30 天人機協作學習手記系列 第 19 篇

[Day 19] 進階第五關:讓資料永久保存!檔案讀寫操作與 with 語法

  • 分享至 

  • xImage
  •  

今日對話:如何讓程式擁有記憶力?

我的 Prompt(提示詞):

「我希望程式關閉後,資料還是能保留下來。請教我如何用 Python 把文字存到一個 txt 檔裡面,然後再把它讀取出來?另外,網路上很多人強調讀寫檔案一定要用 with 語法,那是什麼意思?」

AI 導師的建議與拆解

AI 導師說,操作檔案就像是在「寫實體筆記本」,基本上分為三個步驟:打開筆記本 ➔ 寫字/看字 ➔ 合上筆記本。

在 Python 裡,打開檔案的模式(Mode)有三種最常用的縮寫:

  1. r (Read 讀取):只能看,不能寫。如果檔案不存在會報錯。
  2. w (Write 寫入):把舊內容全部擦掉覆蓋,寫入新內容。如果檔案不存在,會自動幫你建立一個新的。
  3. a (Append 附加):不更動舊內容,從檔案的最尾端接著寫。

那為什麼大家都推薦用 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() 來讀寫檔案。


上一篇
[Day 18] 進階第四關:站在巨人的肩膀上!模組匯入與最強武器庫 (pip)
下一篇
[Day 20] 進階第六關:與世界連線!認識 API、JSON 格式與 Requests 外掛
系列文
當 Python 初學者遇到 AI:30 天人機協作學習手記 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言