Linux上のプログラムによって書き込まれたファイルを監視する方法を探しています。 hereにtail -F
コマンドがあり、またless +FG
が推奨されました。他でtailとlessコマンドがリアルタイムでファイルを監視していない
import time
for i in range(20):
print i
time.sleep(0.5)
:私は1台の端末でtail -F file
、簡単なPythonスクリプトを実行して、それをテスト。私は、出力をファイルにリダイレクト:
python script.py >> file
私はtail
は、ファイルの内容を追跡し、一定の間隔で表示を更新すると予想、代わりにそれが唯一のコマンドが終了した後、ファイルに書き込まれたかを示しています。
less +FG
と同じことが起こります。また、出力をcat
から見ると、私はまた、ファイル>
を>>
の代わりに切り捨てる通常のリダイレクトを使ってみました。ここではファイルが切り捨てられていると言われていますが、それでもリアルタイムではそれをトラッキングしません。
これはなぜ機能しないのでしょうか? (バッファの書き込みが原因かもしれないとhereを示唆していますが、私のスクリプトが10秒以上を実行しているので、私はこれが原因ではないかもしれない疑いがある)
編集:それは重要な場合は、私がLinuxのミント18.1
を実行していますよ
Probalyしたいです'sys.stdout.write( '%d \ n'%i)'、またはこれと同等のものです。 – larsks
@larsksコメントをいただきありがとうございます。私の回答で修正しました – Vinny
あなたは 'print'として残しても、' sys.stdout.flush() 'を使用することができます。 –