все Python 3Linuxosфункция
os.fdatasync
os — синхронизация
Как fsync, но синхронизирует только данные, без части метаданных. Доступно на Unix.
Синтаксис
os.fdatasync(...)
Быстрее fsync, потому что не ждёт записи метаданных, не нужных для чтения данных, — например времени изменения. Размер файла при этом сохраняется. Нет на macOS; переносимый код использует fsync, а там, где fdatasync нужна ради скорости, проверяют hasattr(os, 'fdatasync').
Примеры
import os
fd = os.open('data.log', os.O_WRONLY | os.O_CREAT) # → ? дескриптор открытого файла, например 3
print(os.write(fd, b'payload\n')) # → 8
os.fdatasync(fd) # → ? только Unix: None; данные гарантированно на диске, метаданные вроде времени изменения могут остаться в кеше
os.fsync(fd) # → ? None; в отличие от fdatasync сбрасывает и метаданные — надёжнее, но дороже
os.fdatasync(999) # → OSError: [Errno 9] Bad file descriptor — 999 не открытый дескриптор
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности