все Python 3ioпонятие
Буферизация
буферизация
Буферизованный ввод-вывод накапливает данные в памяти перед записью. flush() принудительно сбрасывает буфер.
Синтаксис
open(file, buffering=-1) # -1 авто, 0 без буфера (только binary), 1 строчный
stream.flush()
buffering=0 допустим только в бинарном режиме — в текстовом open() бросит ValueError; строчная буферизация (buffering=1) наоборот имеет смысл лишь для текстовой записи. Буфер живёт в памяти процесса, поэтому аварийное завершение или os._exit() теряют несброшенное, а сам flush() лишь передаёт данные операционной системе — довести их до диска может только os.fsync(). Для вывода в консоль тот же эффект даёт print(..., flush=True).
Примеры
import io
buf = io.StringIO()
buf.write('text')
buf.getvalue() # → 'text' StringIO не нуждается в flush
f = open('test_io.txt', 'w', buffering=1)
f.write('line\n')
f.flush() # строки сразу сбрасываются
f.close()
open('test_io.txt').read() # → 'line\n'
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности