如何在 Python 中從檔案讀取特定行
Heys
2023年1月30日
2020年6月9日
-
fileobject.readlines()
讀取小型檔案的特定行 -
檔案物件中的
for
迴圈以讀取 Python 中的特定行 -
linecache
模組讀取 Python 中的特定行 -
從 Python 中的大檔案讀取特定行期間的
enumerate
函式
在 Python 中讀取檔案的一種常見方法是完全讀取檔案,然後處理特定行。用 Python 讀取檔案速度很快,例如,寫入 100MiB 檔案大約需要 0.67 秒。但是,如果檔案大小超過 100MB,則將其讀入記憶體時將導致記憶體問題。
Python 有 3 種內建方法,可從檔案中讀取特定行,如以下各節所述。
fileobject.readlines()
讀取小型檔案的特定行
fileobject.readlines()
將所有檔案內容讀取到記憶體中。它可以使用列表切片來讀取特定行。
如果我們只需要讀取第 10 行,
with open("file.txt") as f:
data = f.readlines()[10]
print(data)
如果我們需要讀取 10 到 100 行,
with open("file.txt") as f:
data = f.readlines()[10:100]
print(data)
檔案物件中的 for
迴圈以讀取 Python 中的特定行
對於檔案物件來說,for line
也是小檔案的快速解決方案。
lines =[10, 100]
data = []
i = 0
with open("file.txt", "r+") as f:
for line in f:
if i in lines:
data.append(line.strip)
i = i + 1
print(data)
linecache
模組讀取 Python 中的特定行
linecache
用於讀取許多檔案,可以重複或提取許多行:
import linecache
data = linecache.getline('file.txt', 10).strip()
字串方法 strip()
返回一個字串,該字串從兩端去除空格。
linecache
模組允許你在使用快取進行內部優化的同時從 python 原始檔獲取任何行,這是從單個檔案讀取多行的一種常見做法。追溯模組使用它來檢索格式化的追溯中包含的原始碼行。
從 Python 中的大檔案讀取特定行期間的 enumerate
函式
讀取檔案時,較大的檔案可能會導致諸如記憶體不足之類的問題。在這種情況下,我們可以使用 enumerate()
:
with open("file.txt") as f:
for i, line in enumerate(f):
pass # process line i
請注意,對於第 n 行,i = n-1
。
enumerate()
函式用於將可遍歷的資料物件(例如列表,元組或字串)組合到索引序列中,同時列出資料和資料下標,通常在 for
中使用迴圈。