os.sync() și os.fsync() în Python

Fișiere și directoare (os) Python 3.0+ (sync: 3.3+)

Forțează scrierea efectivă pe disc a datelor aflate încă în memoria tampon.

Sintaxă
os.fsync(fd)
os.sync()

Ce face os.sync() și os.fsync()

Când scrii într-un fișier, datele trec prin memorii tampon ale lui Python și ale sistemului de operare înainte să ajungă pe disc. f.flush() golește tamponul lui Python, iar os.fsync(fd) cere sistemului să scrie fizic pe disc datele acelui fișier. os.sync() face asta pentru toate fișierele.

Este important pentru date critice (baze de date, salvări), ca să nu se piardă la o pană de curent.

Parametri

Parametru Descriere
fd Descriptorul fișierului.

Ce returnează

None.

Exemple

Exemplul 1: Salvare sigură

import os
with open("tranzactii.log", "a", encoding="utf-8") as f:
    f.write("plată 250 lei\n")
    f.flush()
    os.fsync(f.fileno())
os.sync()
with open("tranzactii.log", encoding="utf-8") as f:
    print(f.read(), end="")

Rezultat

plată 250 lei

Greșeli frecvente

  • Apelezi os.fsync fără f.flush() înainte: datele din tamponul lui Python nu au ajuns încă la sistem.

Comenzi înrudite