2017-10-22 13 views
0

の値を印刷していないが、私が実行してみましたサンプルコードです:Pythonはここでループ

import sys 
while True: 
    print "Hello World" 
    #sys.stdout.write("Hello World") 
    #sys.stderr.write("Hello World") 
    sys.stdout.flush() 

Pythonインタプリタから実行したときにこれは、罰金や版画の「Hello World」を実行します。 問題は、次のように実行しようとしたときに、出力をフラッシュしても、printとstdoutでパイプへの書き込みが機能しない場合です。 sys.stderr.write()のコメントを外すと機能します。

python test.py | tail -n 1

親切にprint文がループ内にあるときにのみ発生することに注意してください。誰も私がなぜこのように動作するのか理解できるように助けることができますか?

おかげ

+0

なぜあなたは驚いていることを示す実行可能コードを提供するのではなく、その問題を説明していますか? – roganjosh

答えて

4

あなたは無限の出力を生成しているとtail -n 1が到着したことがない標準入力からの入力の最後ライン、待っています。

+0

助けを借りて@Iguananautに感謝します。私は思っていたようだ。しかし、フォローアップとして、最後の行だけが標準エラーに書き込まれますか?私の主な質問が答えられたので、あなたの答えを受け入れました。 –

+0

私はよくわかりません - それは難しいと思うし、1ライナーとして実行できないかもしれません。あなたが別の質問としてそれを聞いても、私はそれに答えることができるbashウィザードがあると確信しています。 – Iguananaut