如何在 Python 中從檔案讀取特定行

Heys 2023年1月30日 2020年6月9日
  1. fileobject.readlines() 讀取小型檔案的特定行
  2. 檔案物件中的 for 迴圈以讀取 Python 中的特定行
  3. linecache 模組讀取 Python 中的特定行
  4. 從 Python 中的大檔案讀取特定行期間的 enumerate 函式
如何在 Python 中從檔案讀取特定行

在 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 中使用迴圈。

相關文章 - Python File