📁 Python 自學筆記第 7 集:檔案處理與輸入輸出

更新 發佈閱讀 7 分鐘

你可能曾寫過一個清單、計算出一堆成績或總和,然後心想:「欸我不想每次都重算,能不能把這些結果存下來?」

又或者,有人丟給你一份文字檔成績單,拜託你幫忙做統計,你滿腦子問號:「我該怎麼讓 Python 看懂這份檔案?」

接下來就介紹如何利用python程式「把資料寫進檔案」,以及「把外部資料讀進來」


1️⃣ 為什麼要學檔案處理?

想像你是老師、創作者、家長或上班族,這些情境會常遇到:

  • 學生成績要寫入紀錄表 grades.txt
  • 每天的工作日誌要自動產出成檔案
  • 聊天記錄、感想、日常數據想保存
  • 有一堆 csv 成績檔、記帳資料、問卷結果要分析

Python 可以讀,也可以寫!✨


2️⃣ 基本語法:open() 函式

Python 的讀寫檔案主要靠 open() 函式。

f = open("檔名", "模式", encoding="utf-8")

📌 encoding="utf-8" 是指定檔案的編碼方式。 這可以避免在處理中文或特殊符號時出現亂碼,尤其是從 Windows 系統或不同語系平台開檔時。 如果你發現打開檔案後出現「奇怪符號」,幾乎可以肯定是編碼沒設定對。

常見模式:

vocus|新世代的創作平台


記得最後要關掉:

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']


💡 小練習

  1. 寫一個程式,把使用者輸入的心情寫進 mood_log.txt
  2. 再寫一個程式,每次執行時都印出目前的心情記錄


✅ 小結

vocus|新世代的創作平台



📦 第 7 集學會了檔案存取,從今以後你寫下的資料就能永久保存、分析、再利用!

下一集,我們要進階學一些「資料結構進化版」的應用:像是 json 檔、csv 表格、甚至自製小資料庫都在等你探索!

留言
avatar-img
Dolly的奇妙育兒之旅
20會員
132內容數
一串感恩又心累、感謝又荒謬的心路歷程
2025/07/12
遙想端端4歲那年,和波妞現在一樣,吃飯對他來說不是「坐下吃飯」而是「移動式遊樂場」的延伸——扭來扭去、站起來、發呆,媽媽的叮嚀聲此起彼落。 某天我忍不住問他: 「你會不會覺得媽媽對你吃飯的要求太多?」 他很誠實地點頭。 但下一句卻讓我驚喜: 「可是我可以接受『坐好』還有『嘴巴要靠近碗』。」
Thumbnail
2025/07/12
遙想端端4歲那年,和波妞現在一樣,吃飯對他來說不是「坐下吃飯」而是「移動式遊樂場」的延伸——扭來扭去、站起來、發呆,媽媽的叮嚀聲此起彼落。 某天我忍不住問他: 「你會不會覺得媽媽對你吃飯的要求太多?」 他很誠實地點頭。 但下一句卻讓我驚喜: 「可是我可以接受『坐好』還有『嘴巴要靠近碗』。」
Thumbnail
2025/07/12
今早,端端邊吃早餐邊問: 「爸爸起床了嗎?」 我淡淡回了一句: 「還沒啊,你有看過他早起嗎?」 端端想了想,回答: 「平常日啊。」 我笑出聲來,接著補了一句: 「平常日也都是媽媽叫他才起床的喔。」 端端立刻補刀: 「跟小朋友一樣。」 哈哈 這年頭,連爸爸的生理時鐘都
Thumbnail
2025/07/12
今早,端端邊吃早餐邊問: 「爸爸起床了嗎?」 我淡淡回了一句: 「還沒啊,你有看過他早起嗎?」 端端想了想,回答: 「平常日啊。」 我笑出聲來,接著補了一句: 「平常日也都是媽媽叫他才起床的喔。」 端端立刻補刀: 「跟小朋友一樣。」 哈哈 這年頭,連爸爸的生理時鐘都
Thumbnail
2025/07/11
Python 提供了強大的 turtle 模組,這是一個讓你可以在畫布上操作一隻「烏龜」來繪製各種圖形的工具。它不僅能幫助學習編程,還能輕鬆創建動畫、圖形及互動式遊戲。無論是數學家、藝術家,還是對編程感興趣的你,都可以從這個簡單又有趣的工具中獲得樂趣。
Thumbnail
2025/07/11
Python 提供了強大的 turtle 模組,這是一個讓你可以在畫布上操作一隻「烏龜」來繪製各種圖形的工具。它不僅能幫助學習編程,還能輕鬆創建動畫、圖形及互動式遊戲。無論是數學家、藝術家,還是對編程感興趣的你,都可以從這個簡單又有趣的工具中獲得樂趣。
Thumbnail
看更多
你可能也想看
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
如何用Python匯入大批Excel檔案? os.listdir建立資料夾內[檔案名稱.副檔名]之列表 利用迴圈將所有檔案匯入Python 用pandas.concat合併所有DataFrame
Thumbnail
如何用Python匯入大批Excel檔案? os.listdir建立資料夾內[檔案名稱.副檔名]之列表 利用迴圈將所有檔案匯入Python 用pandas.concat合併所有DataFrame
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News