如何使用 Python批量讀取多個文件

  • 2019 年 10 月 4 日
  • 筆記

當我們要批量讀取多個文件所有內容,並把所有行打印出來時,我們可能會這樣寫代碼:

file_list = ['1.txt', '2.txt', '3.txt']for path in file_list:    with open(path, encoding='utf-8') as f:        for line in f:            print(line)

但這樣寫代碼不好看。Python 自帶一個更好用的模塊:fileinput

如果要使用 fileinput讀取列表中的多個文件,那麼可以這樣寫代碼:

import fileinputfile_list = ['1.txt', '2.txt', '3.txt']with fileinput.input(files=file_list) as f:    for line in f:        print(line)

但如果僅僅是這樣,那這個模塊也並沒有省多少事情。我們再來看看它的高級功能。

創建一個 read.py,其內容如下:

import fileinputwith fileinput.input() as f:    for line in f:        print(line)

這個代碼初看起來,沒有讀入任何文件,那麼它的內容從哪裡來呢?

此時我們運行,並嘗試輸入一些內容回車。如下圖所示:

可以看出,它會自動把你輸入的內容打印出來,相當於在 whileTrue裏面加上了 input

不僅如此,這段代碼不做任何修改,我們在 read.py同目錄下創建3個文件 1.txt 2.txt 3.txt。然後使用如下命令運行:

python3 read.py 1.txt 2.txt 3.txt

運行效果如下圖所示:

自動把參數對應的文件都讀入並打印了出來。這裡的參數可以有任意多個。