2016-06-15 4 views
0

test.py(仕事を)終えた:あなたはtest.logログは

でログを取得するのpython test.py> test.log

import time 

_, a, b = [1, 2, 3] 
print a 
print b 

は、コードを実行します

test.py(動作しない):

import time 

_, a, b = [1, 2, 3] 
print a 
print b 

while True: 
    time.sleep(5) 

しかし、あなたがログにNoneを取得しない、この1。

プログラムが終了する前に、pythonログモジュールなしでログを取得するにはどうすればよいですか?

+0

検索「フラッシュ出力」。私はあなたの質問を別のものの複製としました。ファイルではなく「スクリーン」と言っていますが、実際にはプログラムの観点からは同じです。 – spectras

+0

'import sys; sys.stdout.flush() ' – Torxed

+0

5番目の答えはファイルのために働いていますが、その質問には受け入れられません。 – Levi

答えて

3

デフォルトではPythonバッファーstdoutがログに書き込まれるため、チャンクでディスクに書き込まれます。いくつかの異なる方法でバッファリングをオフにすることができます。ここでは2つです。あなたがスクリプトを呼び出すときは、すなわち、-uオプションを使用することができます。

python -u test.py 

あなたは環境のvarialbe PYTHONUNBUFFEREDを使用することができます。

export PYTHONUNBUFFERED=true 
python test.py