2012-10-06 8 views
6

次のコードは1秒から10秒の間に1秒間隔で印刷されますが、実際に何かを印刷する前に10秒待ってからすべて印刷しますすぐに。どうすれば出力をバッファリングできますか?Python sys.stdout.flush()は機能しません

import sys 
import time 
for count in range(10) : 
    sys.stdout.write(str(count)) 
    sys.stdout.flush() 
    time.sleep(1) 

答えて

0

Python 2.7,3.2、および3.3では、書き込み呼び出しでキーワード引数を使用できません。それは適切なコードですか?もちろん、print関数はendキーワードを許可し、書き込みと混同してはいけません。 Writeは改行文字を追加しません。

'end'キーワードの引数を削除し、コードが正常に動作することをテストで確認します。 Pythonは、このような奇妙な、なぜ問題

import sys 
import time 
for count in range(10) : 
    sys.stdout.write("\b%s" % count) 
    sys.stdout.flush() 
    time.sleep(.1) 

見つかり

+1

お返事ありがとうございました...間違いでした...終わりがなくても、すべてのコードを一度に印刷する前にコードが一時停止しています – user1724351

+0

私は完全に完全に問題を再現できません。他の人をテストすることで特定のpythonバージョンに絞ることができますか?どのようなOSですか? – whardier

+0

Mac OSX(Python 3.2.3)。それは単にunbufferをしません – user1724351

1

は分からないのですが、どうやらそれはこれを受け入れました。あなたのコードは正常に動作しているはずですが、私はPythonがあなたを気に入らなかったと思います。

+1

私はpython 3.3 btwを使用していますので、他のバージョンでは異なるかもしれません。より多くの研究を行い、print "end =" \ r ""の引数がバッファをクリアするので、sysをインポートする必要はなく、印刷したものをループすると、単に印刷したものが置き換えられます。 これは、出力が本当にクールな外観を与える – Alexander