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.fsyncfărăf.flush()înainte: datele din tamponul lui Python nu au ajuns încă la sistem.
Comenzi înrudite
os.open(), read(), write(), lseek(), close(), closerange(): Lucrul de nivel jos cu fișierele, prin descriptori numerici, ca în C.open() și with: Deschide un fișier pentru citire sau scriere; cu with, fișierul este închis automat.