【Python標準庫:fileinput】優雅的讀取檔案

徐洲更發表於2018-08-31

每當我寫個指令碼涉及檔案輸入時,一般寫法都是下面這種

import sys

file_in = sys.argv[1]

for line in open(file_in, `r`):
    commands

這個操作有一個缺點就是,如果我想從管道里面傳入資料給Python的話,就會報錯,因為原始碼要求檔案而不是標準輸入。

這個問題可以通過Python的一個標準庫: fileinput進行解決。

import fileinput

for line in fileinput.input():
    process(line)

fileinput.intpu()會幫我們自動處理輸入。如果sys.argv[1:]裡有輸入檔案,它就會對裡面所有的檔案進行遍歷,如果sys.argv為空,那麼它就會從標準輸入sys.stdin裡讀取輸入,如果輸入檔案的檔名是”-“, 同樣地會從標準輸入裡讀取輸入。這樣子就省去了我們自己寫條件語句進行判斷輸入型別。


相關文章