如何在 Python 里優雅地讀取文件特定行

  • 2019 年 10 月 4 日
  • 筆記

有時候,我們可能需要使用 Python 讀取一個文件,並顯示它的某一行。

你可能會這樣寫代碼:

with open('xxx', encoding='utf-8') as f:    lines = f.readlines()    print(f'第100行的內容為:{lines[99]}')

如果文件非常大,不能讀取到內存中,那麼你可能會通過for 循環數行數,數到特定行:

with open('xxx', encoding='utf-8') as f:    for lineno, line in enumerate(f):        if lineno == 99:            print(f'第100行的內容為:{lines[99]}')

這兩種寫法都會涉及到很多的代碼,都不夠好看。

實際上,在 Python 裏面,自帶一個模塊 linecache可以實現這個目的,而且它的使用方法非常簡單:

import linecachetext = linecache.getline('xxx.txt', 99)print(f'第100行的內容為:{text}')

我們平時寫的代碼報錯時,traceback 上面的錯誤行對應的內容,就是使用 linecache查到的。