$ cat script.py
import sys
for line in sys.stdin:
sys.stdout.write(line)
sys.stdout.flush()
$ cat script.py - | python -u script.py
的輸出是正確的,但它只是開始打印一次我按下Ctrl-d,而下開始打印的時候了:爲什麼即使在刷新和使用-u時,python仍然會緩存stdout?
$ cat script.py - | cat
害得我以爲緩衝並非來自貓。
我設法得到它的工作做:
for line in iter(sys.stdin.readline, ""):
如下解釋:Streaming pipes in Python,但我不明白爲什麼如預期前解決方案不起作用。
我編輯了我的問題,解釋它爲什麼似乎不是來自貓本身。 –
你的改變沒有什麼區別......它是第一隻緩衝的貓,因爲輸出到了管道。改變管道後的水槽不會改變任何東西。您可以通過簡單地執行「cat script.py - 」來看到它,並且看到它會立即輸出script.py,因爲它將轉到終端而不是管道。 –
也許我的例子並不清楚,但我認爲它表明,第一隻貓不緩衝,因爲script.py的內容在EOF發送給第一隻貓之前顯示。 –