เมื่อพยายามเขียน stdout จากสคริปต์ Python ไปยังไฟล์ข้อความ ( python script.py > log) ไฟล์ข้อความจะถูกสร้างขึ้นเมื่อคำสั่งเริ่มทำงาน แต่เนื้อหาจริงจะไม่ถูกเขียนจนกว่าสคริปต์ Python จะเสร็จสิ้น ตัวอย่างเช่น:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
พิมพ์ไปยัง stdout ทุก 5 วินาทีเมื่อเรียกด้วยpython script.pyแต่เมื่อฉันโทรpython script.py > logขนาดของไฟล์บันทึกจะเป็นศูนย์จนกระทั่งสคริปต์เสร็จสิ้น เป็นไปได้หรือไม่ที่จะเขียนลงในไฟล์บันทึกโดยตรงเช่นคุณสามารถติดตามความคืบหน้าของสคริปต์ (เช่นใช้tail)?
แก้ไขมันปรากฎว่าpython -u script.pyเป็นการหลอกลวงฉันไม่รู้เกี่ยวกับบัฟเฟอร์ของ stdout