Saat mencoba menulis stdout dari skrip Python ke file teks ( python script.py > log
), file teks dibuat ketika perintah dimulai, tetapi konten yang sebenarnya tidak ditulis sampai skrip Python selesai. Sebagai contoh:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
mencetak ke stdout setiap 5 detik saat dipanggil dengan python script.py
, tetapi ketika saya menelepon python script.py > log
, ukuran file log tetap nol sampai skrip selesai. Apakah mungkin untuk langsung menulis ke file log, sehingga Anda dapat mengikuti kemajuan skrip (misalnya menggunakan tail
)?
EDIT Ternyata yang python -u script.py
melakukan trik, saya tidak tahu tentang buffering stdout.