2017-03-10 22 views
-1

私はwhileループpythonスクリプトを実行して出力をファイルに書き込む方法は?

from time import sleep 
    while True: 
     print "hola" 
     print "mundo" 
     sleep(2) 

とPythonで次のスクリプトを持っていると私は、次のコードで出力をファイルに書きたい:

import subprocess 
    with open("output.log", "w") as output: 
    subprocess.call(["python", "./main.py"], stdout=output); 

事はしばらくは決して終わらないということですファイルoutput.logは決してスクリプトからの出力を得ません。私はそれを行う方法があるのだろうかと思います。

+0

['import logging'](https://docs.python.org/2.6/library/logging.html#simple-examples) – JRodDynamite

+0

pythonのstdoutはデフォルトでバッファリングされます。サブプロセスとしてpythonを呼び出すときに 'print'の後に' sys.stdout.flush() 'を追加するか、' -u'オプションを追加してください。 – ymonad

+0

sys.stdout.flush()は動作しますが、 ? –

答えて

1

次のコマンドで簡単に実行できます。

python filename.py > output.log 

上記のコマンドは、linuxとwindowsの両方で動作します。

+0

お返事いただきありがとうございますが、単純な例があります。複雑なpythonスクリプトがあり、このコマンドを処理することができれば、私が望む出力ログを得ることができます。 –

+0

上記のコマンドは、標準出力(print文)を 'output.log'ファイルに出力します。あなたのプログラムが "hello world"を出力した場合、上記のコマンドでそれを実行すると、 "hello world"が出力されるのではなくログファイルに書き込まれます。 – Matt

関連する問題