Pythonスクリプトからテキストファイル(python script.py > log
)にstdoutを書き込もうとすると、コマンドの開始時にテキストファイルが作成されますが、Pythonスクリプトが終了するまで実際のコンテンツは書き込まれません。例えば:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
で呼び出されpython script.py
た場合、5秒ごとにstdoutに出力されますが、を呼び出した場合python script.py > log
、スクリプトが終了するまでログファイルのサイズはゼロのままです。スクリプトの進行状況を追跡できるように、ログファイルに直接書き込むことは可能tail
ですか(例:を使用)?
編集それpython -u script.py
はトリックを行うことが判明し、stdoutのバッファリングについては知りませんでした。