你可能曾寫過一個清單、計算出一堆成績或總和,然後心想:「欸我不想每次都重算,能不能把這些結果存下來?」
又或者,有人丟給你一份文字檔成績單,拜託你幫忙做統計,你滿腦子問號:「我該怎麼讓 Python 看懂這份檔案?」
接下來就介紹如何利用python程式「把資料寫進檔案」,以及「把外部資料讀進來」
1️⃣ 為什麼要學檔案處理?
想像你是老師、創作者、家長或上班族,這些情境會常遇到:
- 學生成績要寫入紀錄表
grades.txt - 每天的工作日誌要自動產出成檔案
- 聊天記錄、感想、日常數據想保存
- 有一堆
csv成績檔、記帳資料、問卷結果要分析
Python 可以讀,也可以寫!✨
2️⃣ 基本語法:open() 函式
Python 的讀寫檔案主要靠 open() 函式。
f = open("檔名", "模式", encoding="utf-8")
📌 encoding="utf-8" 是指定檔案的編碼方式。 這可以避免在處理中文或特殊符號時出現亂碼,尤其是從 Windows 系統或不同語系平台開檔時。 如果你發現打開檔案後出現「奇怪符號」,幾乎可以肯定是編碼沒設定對。
常見模式:

記得最後要關掉:
f.close()
推薦更安全的寫法:用 with 管理開關!
3️⃣基本語法:自動開啟與關閉檔案with
使用 with 可以自動幫你開啟與關閉檔案。 不需要手動呼叫 f.close(),即使中間程式出錯,Python 也會確保檔案正確關閉。 這種寫法更安全、更簡潔,是檔案操作的最佳實踐!
範例:
with open("example.txt", "w", encoding="utf-8") as f:
f.write("Hello, world!
")
f.write("這是一段自動關閉檔案的寫法!")
🔽 執行後會建立一個叫 example.txt 的檔案,並自動關閉,不需另外呼叫 close()。
4️⃣寫入文字檔 write()
最簡單的寫入範例:
with open("log.txt", "w", encoding="utf-8") as f:
f.write("今天學會用 Python 寫檔案!\n")
f.write("超有成就感 😎\n")
🔽 執行後會建立一個叫 log.txt 的檔案,內容是兩行文字。
🔽 常見錯誤:中文亂碼?編碼搞懂!
- Windows 預設可能不是
UTF-8,建議寫檔/讀檔時都加上encoding="utf-8"。 - 換行符號在不同系統會有差別:
\n(Linux/Mac)、\r\n(Windows)
5️⃣讀取文字檔:read() / readline() / readlines()
📌read() 一次讀完整個檔案
with open("log.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
🔽 輸出:
今天學會用 Python 寫檔案!
超有成就感 😎
【適合】檔案不大、只想一次讀入全部內容。
👉read() 會回傳一個 字串(string),也就是整份檔案的整段文字
📌readline() 一次讀一行(呼叫一次讀一行)
with open("log.txt", "r", encoding="utf-8") as f:
line1 = f.readline()
line2 = f.readline()
print("第一行:", line1.strip())
print("第二行:", line2.strip())
🔽 輸出:
第一行: 今天學會用 Python 寫檔案!
第二行: 超有成就感 😎
【適合】逐行處理,或只想讀前幾行。
👉 一次只讀一行,不會出現 [],因為它不是 list,而是單行的 string。
👉 如果你用兩次 readline(),會分別回傳前兩行。
👉 line.strip() 是為了把換行符號 \n 去掉,看起來比較乾淨。
📌 readlines() 全部讀入,回傳「每行為一項」的清單[]
with open("log.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(lines)
🔽 輸出:
['今天學會用 Python 寫檔案!
', '超有成就感 😎
']
【適合】你想保留每行、搭配清單操作,如迴圈處理每一行。
✔ 因為 readlines() 是把每行變成 list 裡的一個元素,所以才會看到 []和"!
✅ 如果你想一行一行乾淨地印出內容(沒有中括號、也沒有換行符號):
for line in lines:
print(line.strip())
#用line.strip()去除中括號、及換行符號
🔽 輸出:(沒有中括號、也沒有換行符號)
今天學會用 Python 寫檔案!
超有成就感 😎
6️⃣ 小小實例:寫入並讀回清單
names = ["Joe", "May", "Ella"]
# 寫入
with open("names.txt", "w", encoding="utf-8") as f:
for name in names:
f.write(name + "\n")
# 讀取
with open("names.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print("讀到名單:", [line.strip() for line in lines])
🔽 輸出:
讀到名單: ['Joe', 'May', 'Ella']
💡 小練習
- 寫一個程式,把使用者輸入的心情寫進
mood_log.txt中 - 再寫一個程式,每次執行時都印出目前的心情記錄
✅ 小結

📦 第 7 集學會了檔案存取,從今以後你寫下的資料就能永久保存、分析、再利用!
下一集,我們要進階學一些「資料結構進化版」的應用:像是 json 檔、csv 表格、甚至自製小資料庫都在等你探索!


















