Python Glossary English

все Python 3Файлы и I/Oпонятие

buffering=

параметры open()

Параметр open(), задающий политику буферизации: 0 — без буфера (только бинарный режим), 1 — построчно, >1 — размер буфера в байтах, -1 — системный default.

Синтаксис

open(file, mode='r', buffering=-1)

Пока буфер не заполнен, данные лежат в памяти, а не в файле: если параллельно смотреть лог другой программой или процесс аварийно упал, свежих строк там просто не будет — сбрасывает их flush() или close() (в том числе выход из with). buffering=1 нужен именно для таких «живых» логов, но работает только в текстовом режиме: в бинарном Python выдаст предупреждение и возьмёт обычный размер буфера.

Примеры

# без буфера — только в бинарном режиме
with open('raw.bin', 'wb', buffering=0) as f:
    f.write(b'\x00\x01')
# построчная буферизация — только в текстовом режиме
with open('out.txt', 'w', buffering=1) as f:
    f.write('строка\n')   # уходит на диск на каждом переводе строки
# буфер 4096 байт
with open('out.txt', 'r', buffering=4096) as f:
    print(f.read().strip())  # → строка
open('out.txt', 'w', buffering=0)  # → ValueError: текст без буфера не бывает

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности