介紹如何在 Python 中從標準輸入(standard input)讀取資料,以及透過標準錯誤(standard error)輸出錯誤訊息。
標準輸入
sys
模組所提供的 stdin
可以讓程式設計者從標準輸入讀取資料,其使用方式就跟普通檔案一樣:
import sys # 從標準輸入讀取資料 for line in sys.stdin: # 去除空白與換行字元 line = line.rstrip() print(line)
若要在程式執行期間讓使用者輸入資料,可以使用 input
:
# 讓使用者輸入資料 data = input("請輸入資料:") # 輸入的資料 print(data)
fileinput
模組也可以用來讀取標準輸入的資料,不過它的功能更豐富,若執行的指令稿沒有指定任何參數,它就會從標準輸入讀取資料,而如果執行時在參數列指定檔案名稱,則 fileinput
就會自動從該檔案中讀取資料:
import fileinput # 從參數指定的檔案或標準輸入讀取資料 for line in fileinput.input(): # 去除空白與換行字元 line = line.rstrip() print(line)
將上面這段指令稿儲存為 myscript.py
後,可以有兩種資料輸入方式:
# 從標準輸入讀取資料 python3 myscript.py # 從 infile.txt 檔案讀取資料 python3 myscript.py infile.txt
標準錯誤
標準錯誤(standard error)是專門用於輸出警告或錯誤訊息的輸出管道,在 Python 中我們可以將訊息輸出至 sys.stderr
這個特殊檔案,這樣這些訊息就會透過標準錯誤來輸出。
import sys # 將訊息輸出至標準錯誤 print("Hello, Error!", file=sys.stderr)
實務上我們可以定義一個專門用於輸出警告或錯誤的 eprint
函數,這樣會比較方便:
import sys # 專門用於輸出警告或錯誤訊息的函數 def eprint(*args, **kwargs): # 將訊息輸出至標準錯誤 print(*args, file=sys.stderr, **kwargs) # 輸出警告或錯誤訊息 eprint("Hello, Error!")