標準串流(Standard Streams) 是作業系統底層的一個資料交換機制,各個 process 處理資料時皆需要透過它進行輸入與輸出資料,舉凡讀取檔案、寫入檔案或鍵盤輸入等都是。在程式開發上雖然各種語言都已經把這層的處理給包裝起來,已經可以應付日常大部分的用途,但有些需求下還是需要直接操作標準串流才能達成(尤其是開發 CLI Utility)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 操作標準串流需要透過 sys package,在程式的開頭先 import 進來
import sys
# 讀取單行
sys.stdin.readline()
# 讀取多行
sys.stdin.readlines()
# 迴圈讀取
for line in sys.stdin:
print(line)
# 將標準輸出從 console 轉到 stdout.log
fh_stdout = open('stdout.log', 'w')
sys.stdout = fh_stdout
# 輸出字串,但是不會在 console 顯示,而是被寫到 stdout.log 這個檔案
print('Test output to ./stdout.log')
# 將標準輸出從 console 轉到 stderr.log
fh_stderr = open('stderr.log', 'w')
sys.stderr = fh_stderr
# 使用 raise 拋出一個 RuntimeError,錯誤訊息會被寫入到 stderr.log
raise RuntimeError('test stderr')
|
References