IN5. Working with Files +讀檔操作

更新於 發佈於 閱讀時間約 6 分鐘

題目連結


讀入一個充滿文字的檔案

按照1-based 索引取出偶數行(第2、4、6... 行)


程式碼:

with open("IN5.txt", "r", encoding="utf-8") as file:
lines = file.readlines()
for i, line in enumerate(lines, start=1): # 索引從1(第一行)開始,以符合直覺
if i % 2 == 0:
print(line.strip())

僅印出偶數行的文字即可




---

Python讀檔操作

這邊首先複習一下Python讀檔操作的幾種姿勢:

創建一個example.txt

Hello
World
Python


:一次讀全部,讀進來變成大字串。適合小型文件

with open("example.txt", "r", encoding="utf-8") as file:
content = file.read() # 一次讀全部

print(content)

# Hello
# World
# Python​

2:一次讀全部,讀近來變成列表。適合小型文件

2-1:去除換行符號

with open("example.txt", "r", encoding="utf-8") as file:
lines = file.readlines() # 讀取所有行,回傳 list

for line in lines:
print(line.strip()) # strip() 移除換行符號

# Hello
# World
# Python

2-2:不去除換行符號

with open("example.txt", "r", encoding="utf-8") as file:
lines = file.readlines() # 讀取所有行,回傳 list

for line in lines:
print(line)

# Hello

# World

# Python

為何會多一個換行?因為print()函式在行尾會自動加上換行字元

所以2-1是把文件原本的\n去除掉,就只會印出一行換行

2-3:印出原始字符

with open("example.txt", "r", encoding="utf-8") as file:
lines = file.readlines() # 讀取所有行,回傳 list

for line in lines:
print(repr(line)) # 讀取格式字符

# 'Hello\n'
# 'World\n'
# 'Python'

這樣就可以看出,2-1是把文件的\n去除掉了,而非去除print()函式的\n

3:一次只讀一行。可讀大型文件

使用迴圈逐行讀取

with open("example.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip()) # 每次讀取一行

# Hello
# World
# Python​

4:讀取固定長度字節

with open("example.txt", "r", encoding="utf-8") as file:
chunk = file.read(1024) # 每次讀取 1024 字節
while chunk:
print(chunk)
chunk = file.read(1024)

# Hello
# World
# Python​

5:與1.相同,但更簡潔(pathlib.Path)

from pathlib import Path
content = Path("example.txt").read_text(encoding="utf-8") # 一次讀一整個檔案
# .read_bytes() # 則是讀二進制檔案

print(content)

# Hello
# World
# Python

寫法更短,甚至不用寫open()、也不用with,因為都包好了。是更Pythonic的方式

6:沒有with,則需要手動關閉文件(不推薦)

file = open("example.txt", "r", encoding="utf-8")
try:
content = file.read()finally:
file.close() # 手動關閉文件流,確保資源釋放

print(content)
# 只有 def, class 區塊會創建新的作用域(scope)
# if, for, while, with, try/catch 區塊不會創建作用域,所以content變數仍存在

忘記關閉的話會導致記憶體洩漏

留言
avatar-img
留言分享你的想法!
avatar-img
生物資訊實驗室
0會員
16內容數
這裡存放著滿滿的大平台!Rosalind 生物資訊解題平台的學習過程! 📢 適合對象: ✅ 想學習生物資訊的程式新手 ✅ 對Python程式有基礎,想挑戰 Rosalind 題目的解題者 ✅ 對DNA、蛋白質、基因組數據分析有興趣的人
生物資訊實驗室的其他內容
2025/03/20
題目:https://rosalind.info/problems/ini6/ 從這題開始有一點點難度了 計算每個字詞出現的次數,區分大小寫(Python Dict 預設就是大小寫敏感) 首先將輸入字串,按照空白字元做切割,得到一個陣列 ['We', 'tried', 'list',
2025/03/20
題目:https://rosalind.info/problems/ini6/ 從這題開始有一點點難度了 計算每個字詞出現的次數,區分大小寫(Python Dict 預設就是大小寫敏感) 首先將輸入字串,按照空白字元做切割,得到一個陣列 ['We', 'tried', 'list',
2025/03/18
計算所有在a~b之間的奇數數字 python沒有內建 isOdd()函式,所以只能寫ifㄍ判斷奇數、偶數 a, b = 100, 200 s = 0 for i in range(a, b+1): if i % 2 == 1: s += i print(s)
2025/03/18
計算所有在a~b之間的奇數數字 python沒有內建 isOdd()函式,所以只能寫ifㄍ判斷奇數、偶數 a, b = 100, 200 s = 0 for i in range(a, b+1): if i % 2 == 1: s += i print(s)
2025/03/18
題目:https://rosalind.info/problems/ini3/ 給一長字串,然後a, b, c, d 4個數字 切出字串[a~b]、字串[c~d]的位置,連接後印出來 (須包含字串[b]、字串[d]的位置) s = "HumptyDumptysatonawallHum
2025/03/18
題目:https://rosalind.info/problems/ini3/ 給一長字串,然後a, b, c, d 4個數字 切出字串[a~b]、字串[c~d]的位置,連接後印出來 (須包含字串[b]、字串[d]的位置) s = "HumptyDumptysatonawallHum
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
高中數學主題練習—配方法
Thumbnail
高中數學主題練習—配方法
Thumbnail
高中數學主題練習—配方法
Thumbnail
高中數學主題練習—配方法
Thumbnail
手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
我捨棄了編號系統,解放三倍大腦思考能量
Thumbnail
我捨棄了編號系統,解放三倍大腦思考能量
Thumbnail
編輯的基本功,是對文字的敏感度。
Thumbnail
編輯的基本功,是對文字的敏感度。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News