天天看點

Python:fileinput操作檔案

fileinput子產品提供了一個以行模型循環處理一個或多個檔案内容的功能,它實作了對檔案中行的“懶惰”疊代,讀取時不需要把檔案内容放入記憶體,這樣可以提高程式的效率。

fileinput子產品中常用的函數有:

  • fileinput.input():傳回能夠用于疊代一個或多個檔案中所有行的對象。
  • fileinput.filename():傳回目前檔案的名稱。
  • fileinput.lineno():傳回目前讀取的行的數量(總得行數)。
  • fileinput.isfirstline():傳回目前行,判斷是否是檔案的第一行,是目前檔案的第一行時傳回True,反之傳回False。
  • fileinput.filelineno():傳回目前讀取行在檔案中的行數(哪個檔案夾中的第幾行)。

fileinput支援上下文管理器,可以使用with語句來進行操作,而不是在使用後手工關閉對象f.close()。

import fileinput


def demo_fileinput():
    with fileinput.input(['fpa.txt', 'fpb.txt']) as lines:
        for line in lines:
            print("總第%d行," % fileinput.lineno(),
                  "檔案%s中第%d行:" % (fileinput.filename(), fileinput.filelineno()))
            print(line.strip())


if __name__ == '__main__':
    demo_fileinput()
           

輸出結果:

總第1行, 檔案fpa.txt中第1行:
fpa-1
總第2行, 檔案fpa.txt中第2行:
fpa-2
總第3行, 檔案fpa.txt中第3行:
fpa-3
總第4行, 檔案fpb.txt中第1行:
fpb-1
總第5行, 檔案fpb.txt中第2行:
fpb-2
總第6行, 檔案fpb.txt中第3行:
fpb-3