เมื่อพยายามเขียน 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