Immagina di avere una libreria per lavorare con una sorta di file XML o di configurazione. La libreria legge l'intero file in memoria e fornisce metodi per modificare il contenuto. Quando hai terminato di manipolare il contenuto, puoi chiamare lo write
per salvare il contenuto sul file. La domanda è come farlo in modo sicuro.Come scrivere in sicurezza su un file?
Sovrascrivere il file esistente (iniziando a scrivere sul file originale) non è ovviamente sicuro. Se il metodo write
fallisce prima che sia terminato, si finisce con un file scritto a metà e si perdono i dati.
Una soluzione migliore sarebbe quella di scrivere in un file temporaneo da qualche parte, e quando il metodo write
è terminata, è copiare il file temporaneo al file originale.
Ora, se la copia non riesce in qualche modo, è ancora stato salvato correttamente i dati nel file temporaneo. E se la copia riesce, è possibile rimuovere il file temporaneo.
Su sistemi POSIX, suppongo che sia possibile utilizzare la chiamata di sistema rename
che è un'operazione atomica. Ma come faresti meglio su un sistema Windows? In particolare, come gestirli al meglio usando Python?
Inoltre, esiste un altro schema per scrivere in modo sicuro sui file?
Perché copiare? Perché non rinominare? –