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會員
17內容數
這裡存放著滿滿的大平台!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
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
高中數學主題練習—配方法
Thumbnail
高中數學主題練習—配方法
Thumbnail
高中數學主題練習—配方法
Thumbnail
高中數學主題練習—配方法
Thumbnail
手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
我捨棄了編號系統,解放三倍大腦思考能量
Thumbnail
我捨棄了編號系統,解放三倍大腦思考能量
Thumbnail
編輯的基本功,是對文字的敏感度。
Thumbnail
編輯的基本功,是對文字的敏感度。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News