Como gravar com segurança em um arquivo?

Imagine que você tenha uma biblioteca para trabalhar com algum tipo de arquivo XML ou arquivo de configuração. A biblioteca lê todo o arquivo na memória e fornece métodos para editar o conteúdo. Quando você terminar de manipular o conteúdo, você pode chamar umwrite para salvar o conteúdo de volta ao arquivo. A questão é como fazer isso de maneira segura.

Sobrescrever o arquivo existente (começar a escrever no arquivo original) obviamente não é seguro. Se owrite método falhar antes de terminar você acaba com um arquivo meio escrito e você perdeu dados.

Uma melhor opção seria escrever para umtemporário arquivo em algum lugar, e quando owrite método terminou, vocêcópia de o arquivo temporário para o arquivo original.

Agora, se a cópia falhar, você ainda salvou os dados corretamente no arquivo temporário. E se a cópia for bem-sucedida, você poderá remover o arquivo temporário.

Em sistemas POSIX, eu acho que você pode usar orename chamada de sistema que é uma operação atômica. Mas como você faria isso melhor em um sistema Windows? Em particular, como você lida com isso melhor usandoPython?

Além disso, existe outro esquema para gravar com segurança em arquivos?

questionAnswers(8)

yourAnswerToTheQuestion