在 Unix Like 環境下的 Pipe (管線) 十分重要, 它可以將一個程式的輸出, 送給另一個程式處理, 只要中間用 “|” 字符相隔, 讓幾個不同的程式互相配合工作, 以下本章會介紹在 Python 讀取 Pipe 輸入的方法.
在 Python 要讀取 Pipe 輸入, 可以用 sys 模組的 sys.stdin, 它會讀取 /dev/stdin 的輸入, 例如:
1 2 3 4 5 6 |
#!/usr/bin/python import sys for line in sys.stdin: print line |
以上程式碼會將 stdin 輸入逐行印出, 另一個例子是要將輸入逐行讀取, 然後將數值乘 2, 寫法是這樣:
1 2 3 4 5 |
#!/usr/bin/python import sys for line in sys.stdin: print int(line.strip()) * 2 |
可以這樣執行測試:
1 |
echo -e "1\n2\n3" | ./test.py |
上面會用 echo 輸入三行分別是 1, 2, 3 到 test.py, 執行結果是:
2
4
6
上面的 echo 加入了 -e 參數, 是要讓 echo 直接輸出 \n 換行字串, 如果沒有 -e 參數, 不會輸入 3 行, 而是輸入一行 “1\\n2\\3”.